
Inglês |中文
Pratique ferrugem com exemplos, exercícios e projetos desafiadores
Este livro foi projetado para mergulhar facilmente e ser habilidoso com ferrugem, é muito fácil de usar. Tudo o que você precisa fazer é fazer com que cada exercício seja compilado sem erros e pânico!
Parte de nossos exemplos e exercícios são emprestados da ferrugem pelo exemplo, obrigado por suas ótimas obras!
Embora sejam tão incríveis, temos nossas próprias armas secretas :)
Existem três partes em cada capítulo: exemplos, exercícios e práticas
Além de exemplos, temos a lot of exercises , você pode ler, editar e executá -los online
Abrangendo quase todos os aspectos da ferrugem, como assíncrona/aguardando, tópicos, primitivos de sincronização, otimização, bibliotecas padrão, cadeia de ferramentas, estruturas de dados e algoritmos etc.
Cada exercício tem suas próprias soluções
As dificuldades gerais são um pouco mais altas e de fácil a super difícil: fácil? médio ?? duro ??? super difícil ????
O que queremos fazer é preencher a lacuna entre aprender e começar com projetos reais.
Obrigado a todos os nossos colaboradores!
? Agradecimentos especiais ao nosso editor de inglês:
Tanish-Eagle |
Usamos o MDbook construindo nossos exercícios. Você pode funcionar localmente com as etapas abaixo:
$ 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/??? A Tupla Struct se parece com as tuplas, adicionou o que significa que o nome da estrutura fornece, mas não possui campos nomeados. É útil quando você deseja dar um nome a toda a tupla, mas não se importe com os nomes dos campos.
// 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 ) ;
}? Dentro da destruição de uma única variável, as ligações de padrões de move e de referência podem ser usadas ao mesmo tempo. Fazer isso resultará em um movimento parcial da variável, o que significa que partes da variável serão movidas enquanto outras peças permanecem. Nesse caso, a variável pai não pode ser usada posteriormente como um todo; no entanto, as peças que são apenas referenciadas (e não movidas) ainda podem ser usadas.
// 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 ) ;
}? Um guarda de fósforo é uma condição adicional se especificada após o padrão em um braço de partida que também deve corresponder, juntamente com a correspondência do padrão, para que esse braço seja escolhido.
// 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 => ( ) ,
}
}