
Bahasa Inggris |中文
Berlatih karat dengan contoh, latihan, dan proyek yang menantang
Buku ini dirancang untuk dengan mudah menyelam dan menjadi terampil dengan karat itu sangat mudah digunakan. Yang perlu Anda lakukan adalah membuat setiap latihan dikompilasi tanpa kesalahan dan panik!
Bagian dari contoh dan latihan kami dipinjam dari karat dengan contoh, terima kasih atas pekerjaan hebat Anda!
Meskipun mereka sangat luar biasa, kami memiliki senjata rahasia kami sendiri :)
Ada tiga bagian di setiap bab: contoh, latihan dan praktik
Selain contoh, kami memiliki a lot of exercises , Anda dapat membaca, mengedit, dan menjalankannya secara online
Meliputi hampir semua aspek karat, seperti async/menunggu, utas, sinkronisasi primitif, mengoptimalkan, perpustakaan standar, rantai pahat, struktur data dan algoritma dll.
Setiap latihan memiliki solusi sendiri
Kesulitan keseluruhan sedikit lebih tinggi dan dari mudah menjadi super keras: mudah? sedang ?? keras ??? super keras ????
Yang ingin kami lakukan adalah mengisi kesenjangan antara belajar dan memulai dengan proyek nyata.
Terima kasih kepada semua kontributor kami!
? Terima kasih khusus kepada editor bahasa Inggris kami:
Tanish-Eagle |
Kami menggunakan MDBook membangun latihan kami. Anda dapat menjalankan secara lokal dengan langkah -langkah di bawah ini:
$ git clone [email protected]:sunface/rust-by-practice.git$ cargo install mdbook$ cd rust-by-practice && mdbook serve en/$ cd rust-by-practice && mdbook serve zh-CN/??? Tuple struct terlihat mirip dengan tupel, telah menambahkan yang berarti nama struct disediakan tetapi tidak memiliki bidang bernama. Ini berguna ketika Anda ingin memberi seluruh nama tuple, tetapi tidak peduli nama ladang.
// fix the error and fill the blanks
struct Color ( i32 , i32 , i32 ) ;
struct Point ( i32 , i32 , i32 ) ;
fn main ( ) {
let v = Point ( ___ , ___ , ___ ) ;
check_color ( v ) ;
}
fn check_color ( p : Color ) {
let ( x , _ , _ ) = p ;
assert_eq ! ( x , 0 ) ;
assert_eq ! ( p . 1 , 127 ) ;
assert_eq ! ( ___ , 255 ) ;
}?? Dalam perusak variabel tunggal, baik by-move dan binding pola referensi dapat digunakan pada saat yang sama. Melakukan hal ini akan menghasilkan gerakan parsial dari variabel, yang berarti bahwa bagian -bagian dari variabel akan dipindahkan sementara bagian lain tetap. Dalam kasus seperti itu, variabel induk tidak dapat digunakan setelahnya secara keseluruhan, namun bagian -bagian yang hanya dirujuk (dan tidak dipindahkan) masih dapat digunakan.
// fix errors to make it work
# [ derive ( Debug ) ]
struct File {
name : String ,
data : String ,
}
fn main ( ) {
let f = File {
name : String :: from ( "readme.md" ) ,
data : "Rust By Practice" . to_string ( )
} ;
let _name = f . name ;
// ONLY modify this line
println ! ( "{}, {}, {:?}" , f . name , f . data , f ) ;
}?? Penjaga korek api adalah tambahan IF kondisi yang ditentukan setelah pola dalam lengan korek api yang juga harus cocok, bersama dengan pencocokan pola, agar lengan itu dipilih.
// fill in the blank to make the code work, `split` MUST be used
fn main ( ) {
let num = Some ( 4 ) ;
let split = 5 ;
match num {
Some ( x ) __ => assert ! ( x < split ) ,
Some ( x ) => assert ! ( x >= split ) ,
None => ( ) ,
}
}