
英語|中文
挑戦的な例、エクササイズ、プロジェクトで錆を練習します
この本は、錆びに簡単に飛び込んで熟練するように設計されています。非常に使いやすいです。あなたがする必要があるのは、各エクササイズをエラーやパニックなしでコンパイルすることです!
私たちの例とエクササイズの一部は、例えば錆から借用されています。あなたの素晴らしい作品をありがとう!
彼らはとても素晴らしいですが、私たちは私たち自身の秘密兵器を持っています:)
各章には3つの部分があります:例、演習、練習
例に加えて、私たちはa lot of exercisesを持っています、あなたはそれらをオンラインで読み、編集し、実行することができます
Async/await、Threads、同期プリミティブ、最適化、標準ライブラリ、ツールチェーン、データ構造、アルゴリズムなど、錆のほぼすべての側面をカバーします。
すべてのエクササイズには独自の解決策があります
全体的な困難は少し高く、簡単なものから超ハードまで:簡単ですか?中くらい ??難しい ???超ハード????
私たちがやりたいのは、学習と実際のプロジェクトを始めることの間のギャップを埋めることです。
すべての貢献者に感謝します!
?英語の編集者に特別な感謝:
Tanish-eagle |
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/??? Tuple structはタプルに似ており、Struct Nameが提供する意味を追加しましたが、名前が付けられていません。タプル全体に名前を付けたいが、フィールズの名前を気にしない場合は便利です。
// 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 => ( ) ,
}
}