Rangkuman, Mock Smart Pointer
Termasuk bagian Pemrograman Berorientasi Objek dalam perjalanan Rust di Coddy. Pelajaran 58 dari 61.
Tantangan
MudahMari kita buat mock smart pointer bernama SmartBox yang menunjukkan cara kerja smart pointer Rust sebenarnya! Wrapper-mu akan bersifat generik, menyediakan akses ke nilai di dalamnya, dan secara otomatis mengumumkan saat dibersihkan.
Kamu akan menyusun kodemu dalam dua file:
smart_box.rs: Definisikan struct generik publikSmartBox<T>dengan satu fieldvaluebertipeT. Implementasikan fungsi terkaitnewyang membuat SmartBox dan mencetak pesan pembuatan. Tambahkan methodgetyang mengembalikan referensi ke nilai di dalamnya. Terakhir, implementasikan traitDropuntuk mencetak pesan pembersihan saat SmartBox keluar dari cakupan.main.rs: Muat module smart_box dan tunjukkan penggunaan SmartBox dengan dua tipe yang berbeda. BuatSmartBox<i32>yang menyimpan angka danSmartBox<String>yang menyimpan teks, keduanya dari input yang diberikan. Cetak nilainya menggunakan methodget. Pesan Drop akan muncul secara otomatis saat box keluar dari cakupan di akhir main.
Saat SmartBox dibuat, cetak:
SmartBox createdSaat mengakses nilai, cetak dengan format ini:
Value: {value}Saat SmartBox di-drop, cetak:
SmartBox droppedContohnya, dengan input 42 dan Hello:
SmartBox created
SmartBox created
Value: 42
Value: Hello
SmartBox dropped
SmartBox droppedPerhatikan bahwa kedua box dibuat terlebih dahulu, lalu nilainya diakses, dan akhirnya keduanya di-drop dalam urutan terbalik, yaitu yang terakhir dibuat akan di-drop pertama, saat main berakhir.
Kamu akan menerima dua input: nilai bilangan bulat (parse sebagai i32) dan nilai string.
Coba sendiri
mod smart_box;
use smart_box::SmartBox;
fn main() {
// Baca input
let mut input1 = String::new();
std::io::stdin().read_line(&mut input1).expect("Failed to read line");
let number: i32 = input1.trim().parse().expect("Failed to parse number");
let mut input2 = String::new();
std::io::stdin().read_line(&mut input2).expect("Failed to read line");
let text = input2.trim().to_string();
// TODO: Buat SmartBox<i32> yang menyimpan angka tersebut
// TODO: Buat SmartBox<String> yang menyimpan teks tersebut
// TODO: Cetak nilai-nilainya menggunakan method get
// Format: "Value: {value}"
// Pesan Drop akan muncul secara otomatis saat main berakhir
}
Semua pelajaran di Pemrograman Berorientasi Objek
1Method dan Perilaku
Pengantar Blok ImplementasiParameter SelfMethod MutableFungsi TerkaitBeberapa Blok ImplementasiMethod BerantaiRangkuman: Aksi Persegi Panjang4Proyek: Hewan Peliharaan Virtual
Mendefinisikan Hewan PeliharaanMemberi Makan Hewan Peliharaan2Enkapsulasi dan module
Dasar-Dasar moduleKata Kunci publicField privateGetterSetterRekap: Loker AmanLatihan sendiri: Compiler Rust online