Ini adalah perpustakaan inti yang memodelkan pemeriksaan pinjaman. Ini mengimplementasikan analisis yang dijelaskan dalam posting blog ini dan pembicaraan ini. Detailnya ada di buku Polonius.
Nama tersebut berasal dari kutipan terkenal "Tidak ada peminjam maupun pemberi pinjaman", yang berasal dari karakter Polonius dalam Hamlet karya Shakespeare.
Salah satu tujuan repo ini adalah untuk bereksperimen dan membandingkan implementasi berbeda dari algoritma yang sama. Anda dapat menjalankan analisis dengan menggunakan cargo run
dan Anda dapat memilih analisis dengan -a
. Jadi misalnya untuk menjalankan contoh ekstrak dari clap, Anda dapat melakukan:
> 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
Anda juga dapat mencoba -a Naive
untuk mendapatkan aturan yang naif (lebih mudah dibaca, lebih lambat) -- ini adalah aturan persis yang dijelaskan di postingan blog. Anda juga dapat menggunakan -a LocationInsensitive
untuk menggunakan analisis yang tidak sensitif terhadap lokasi (lebih cepat, namun mungkin menghasilkan kesalahan palsu).
Secara default, cargo run
hanya mencetak waktu. Jika Anda juga ingin melihat hasilnya, coba --show-tuples
(yang akan menampilkan kesalahan) dan mungkin -v
(untuk menampilkan lebih banyak perhitungan perantara). Anda dapat menyediakan --help
untuk mendapatkan lebih banyak dokumen.
Untuk menjalankan pemeriksa pinjaman pada suatu masukan, Anda harus terlebih dahulu membuat fakta masukan. Untuk itu, Anda perlu menjalankan rustic dengan opsi -Znll-facts
:
> rustc -Znll-facts inputs/issue-47680/issue-47680.rs
Atau, untuk menghasilkan fakta masukan peti menggunakan tanda #![feature(nll)]
:
> cargo rustc -- -Znll-facts
Ini akan menghasilkan direktori nll-facts
dengan satu subdirektori per fungsi:
> ls -F nll-facts
{{impl}}-maybe_next/ main/
Anda kemudian dapat menjalankan direktori ini.