Latihan 1 dari materi Smart Pointers di Rust — praktek dengan editor kode interaktif, test case otomatis, dan hint terpandu. Langsung jalan di browser.
Satu data, beberapa pemilik: hitung pemiliknya dengan Rc. Kali ini datanya teks hypersheets. Editor sudah berisi use std::rc::Rc;, let data = Rc::new(String::from("hypersheets"));, dan println!("{}", Rc::strong_count(&data));, yang mencetak 1. Biarkan semuanya, lalu di bawahnya:
- Tambah pemilik kedua dengan
let kedua = Rc::clone(&data);, lalu cetak lagi println!("{}", Rc::strong_count(&data));.
- Tambah pemilik ketiga dengan
let ketiga = Rc::clone(&data);, lalu cetak println!("{}", Rc::strong_count(&data)); sekali lagi.
- Cetak isinya lewat pemilik ketiga:
println!("{}", ketiga);. Teksnya gak disalin; ketiga menunjuk data yang sama.
- Klik Jalankan.
Output-nya, empat baris:
1
2
3
hypersheets
Yang diperiksa: baris pertama sampai keempat persis 1, 2, 3, dan hypersheets; kode-mu memakai Rc::clone; dan angkanya dicetak dengan println!("{}", Rc::strong_count(&data)), bukan diketik sendiri. Di cargo sungguhan, kedua yang gak dipakai lagi memberi warning unused variable; programnya tetap jalan (nama _kedua membuatnya diam).