هذه مكتبة أساسية تمثل نموذج فحص الاقتراض. وهو ينفذ التحليل الموضح في هذه المدونة وفي هذا الحديث. التفاصيل في كتاب بولونيوس.
يأتي الاسم من الاقتباس الشهير "لا يكون مقترض ولا مُقرض"، والذي يأتي من شخصية بولونيوس في مسرحية شكسبير هاملت .
أحد أهداف هذا الريبو هو تجربة ومقارنة التطبيقات المختلفة لنفس الخوارزمية. يمكنك تشغيل التحليل باستخدام cargo run
ويمكنك اختيار التحليل باستخدام -a
. لذلك، على سبيل المثال، لتشغيل مثال مقتطف من التصفيق، يمكنك القيام بما يلي:
> cargo +nightly run --release -- -a DatafrogOpt inputs/clap-rs/app-parser-{{impl}}-add_defaults/
Finished release [optimized] target(s) in 0.05 secs
Running ` target/release/borrow-check ' inputs/clap-rs/app-parser-{{impl}}-add_defaults/ ' `
--------------------------------------------------
Directory: inputs/clap-rs/app-parser-{{impl}}-add_defaults/
Time: 3.856s
يمكنك أيضًا تجربة -a Naive
للحصول على القواعد الساذجة (أكثر قابلية للقراءة، وأبطأ) - هذه هي القواعد الدقيقة الموضحة في منشور المدونة. يمكنك أيضًا استخدام -a LocationInsensitive
لاستخدام تحليل غير حساس للموقع (أسرع، ولكن قد يؤدي إلى أخطاء زائفة).
بشكل افتراضي، cargo run
بطباعة التوقيت فقط. إذا كنت تريد أيضًا رؤية النتائج، فجرب --show-tuples
(الذي سيظهر الأخطاء) وربما -v
(لإظهار المزيد من الحسابات المتوسطة). يمكنك توفير --help
للحصول على المزيد من المستندات.
لتشغيل مدقق الاقتراض على أحد المدخلات، تحتاج أولاً إلى إنشاء حقائق الإدخال. للقيام بذلك، ستحتاج إلى تشغيل Rustc باستخدام خيار -Znll-facts
:
> rustc -Znll-facts inputs/issue-47680/issue-47680.rs
أو لإنشاء حقائق الإدخال الخاصة بالصندوق باستخدام العلامة #![feature(nll)]
:
> cargo rustc -- -Znll-facts
سيؤدي هذا إلى إنشاء دليل nll-facts
مع دليل فرعي واحد لكل وظيفة:
> ls -F nll-facts
{{impl}}-maybe_next/ main/
يمكنك بعد ذلك التشغيل على هذه الدلائل.