Ringkasan: Titik yang Dapat Dicetak
Termasuk bagian Pemrograman Berorientasi Objek dalam perjalanan Rust di Coddy. Pelajaran 39 dari 61.
Tantangan
MudahMari satukan semua trait standar yang sudah kamu pelajari dengan membuat struct Point berfitur lengkap yang bisa di-debug, ditampilkan dengan baik, dan dibandingkan kesamaannya!
Kamu akan menyusun kodemu dalam dua file:
point.rs: Definisikan structPointpublik dengan fieldxdanypublik (keduanya bertipei32).Point-mu harus mendukung tiga kemampuan:- Mencetak debug dengan
{:?}. Turunkan trait ini secara otomatis - Tampilan yang mudah dibaca dengan
{}dalam format(x, y): implementasikan secara manual menggunakanstd::fmt::Display - Perbandingan kesamaan dengan
==: turunkanPartialEq
- Mencetak debug dengan
main.rs: Muat module point-mu dan buat dua instancePointmenggunakan input yang diberikan. Tunjukkan ketiga kemampuan tersebut dengan mencetak titik pertama dalam format debug, mencetak titik kedua dalam format display, dan membandingkan apakah kedua titik sama.
Output-mu harus menunjukkan ketiga kemampuan trait tersebut:
Debug: Point { x: {x1}, y: {y1} }
Display: ({x2}, {y2})
Equal: {true/false}Misalnya, dengan input 3, 5, 3, 5:
Debug: Point { x: 3, y: 5 }
Display: (3, 5)
Equal: trueDan dengan input 10, 20, 5, 15:
Debug: Point { x: 10, y: 20 }
Display: (5, 15)
Equal: falseKamu akan menerima empat input: koordinat x dan y untuk titik pertama, lalu koordinat x dan y untuk titik kedua. Parse masing-masing sebagai i32.
Coba sendiri
mod point;
use point::Point;
fn main() {
// Baca empat input: x1, y1, x2, y2
let mut input = String::new();
std::io::stdin().read_line(&mut input).expect("Failed to read line");
let x1: i32 = input.trim().parse().expect("Invalid input");
input.clear();
std::io::stdin().read_line(&mut input).expect("Failed to read line");
let y1: i32 = input.trim().parse().expect("Invalid input");
input.clear();
std::io::stdin().read_line(&mut input).expect("Failed to read line");
let x2: i32 = input.trim().parse().expect("Invalid input");
input.clear();
std::io::stdin().read_line(&mut input).expect("Failed to read line");
let y2: i32 = input.trim().parse().expect("Invalid input");
// TODO: Buat dua instance Point menggunakan input tersebut
// TODO: Cetak titik pertama menggunakan format debug {:?}
// Format: "Debug: Point { x: ..., y: ... }"
// TODO: Cetak titik kedua menggunakan format display {}
// Format: "Display: (..., ...)"
// TODO: Bandingkan kedua titik dan cetak hasilnya
// Format: "Equal: true" atau "Equal: false"
}
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 Peliharaan7Trait Standar
Trait DebugTrait DisplayClone dan CopyTrait KesetaraanRingkasan: Titik yang Dapat Dicetak2Enkapsulasi dan module
Dasar-Dasar moduleKata Kunci publicField privateGetterSetterRekap: Loker AmanLatihan sendiri: Compiler Rust online