
Английский |中文
Практикуйте ржавчину с сложными примерами, упражнениями и проектами
Эта книга была разработана для легкого погружения и квалифицированного с ржавчиной, ее очень легко использовать. Все, что вам нужно сделать, это сделать компиляцию каждого упражнения без ошибок и паники!
Часть наших примеров и упражнений заимствована из Rust By примера, спасибо за отличные работы!
Хотя они такие потрясающие, у нас есть собственное секретное оружие :)
В каждой главе есть три части: примеры, упражнения и практики
Помимо примеров, у нас a lot of exercises , вы можете читать, редактировать и запустить их онлайн
Охватывание почти всех аспектов ржавчины, таких как асинхрон/ожидание, потоки, синхронизации, оптимизация, стандартные библиотеки, цепочка инструментов, структуры данных, алгоритмы и т. Д.
У каждого упражнения есть свои решения
Общие трудности немного выше и от легких до супер жестких: легко? середина ?? жесткий ??? Супер жестко ????
То, что мы хотим сделать, это заполнить разрыв между обучением и началом работы с реальными проектами.
Спасибо всем нашим участникам!
? Особая благодарность нашему английскому редактору:
Таниш-Орел |
Мы используем MDBook, создавая наши упражнения. Вы можете работать локально с шагами ниже:
$ 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/??? Структура кортежа выглядит похоже на кортежи, она добавила значение, которое дает имя структуры, но не имеет названных полей. Это полезно, когда вы хотите дать всему кортежу имя, но не заботится о именах Поля.
// 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 ) ;
}?? В рамках деструкции одной переменной можно использовать привязки как с шаблонами, так и с шаблонами, так и с помощью ссылки. Это приведет к частичному движению переменной, что означает, что части переменной будут перемещаться, пока другие части останутся. В таком случае родительская переменная не может быть использована впоследствии в целом, однако могут использоваться только части, на которые ссылаются только (а не перемещенные).
// 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 ) ;
}?? Матч -охранник - это дополнительное, если условие, указанное после рисунка в матче, которое также должно совпадать, наряду с сопоставлением рисунка, чтобы выбрать эту руку.
// 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 => ( ) ,
}
}