
영어 |中文
도전적인 예, 운동 및 프로젝트로 녹을 연습하십시오
이 책은 쉽게 다이빙을하고 Rust에 숙련되도록 설계되었습니다. 사용하기가 매우 쉽습니다. 오류와 공황없이 각 운동을 컴파일하는 것입니다!
우리의 예와 연습의 일부는 예를 들어 Rust에서 빌려요, 당신의 위대한 작품에 감사드립니다!
그들은 너무 굉장하지만 우리는 우리 자신의 비밀 무기를 가지고 있습니다 :)
각 장에는 세 부분이 있습니다 : 예, 연습 및 관행
예제 외에도 a lot of exercises 있으며 온라인으로 읽고 편집하고 실행할 수 있습니다.
Async/Await, Threads, Sync Primitives, 최적화, 표준 라이브러리, 도구 체인, 데이터 구조 및 알고리즘 등과 같은 녹의 거의 모든 측면을 다루고 있습니다.
모든 운동에는 고유 한 솔루션이 있습니다
전반적인 어려움은 조금 높아지고 쉽게 쉽게 : 쉬운가요? 중간 ?? 딱딱한 ??? 슈퍼 하드 ????
우리가하고 싶은 것은 학습과 실제 프로젝트를 시작하는 것 사이의 격차를 메우는 것입니다.
우리의 모든 기고자들에게 감사합니다!
? 영어 편집자에게 특별한 감사 :
타니시-에글 |
우리는 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 ) ;
}?? 매치 가드는 해당 암을 선택하기 위해 패턴 일치와 함께 일치 해야하는 매치 암의 패턴 다음에 지정된 추가 IF 조건입니다.
// 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 => ( ) ,
}
}