言語は専門家向けのツールです。 専門職による作品は専門家を意味します。 新しい言語を学ぶとき、専門家は最初に何を読みますか? もちろん、同僚の客観的な意見 。 それは主にポジティブです。 同僚の意見に従って、専門家は言語の説明を読みます。 200ページ以上。 おお 地下鉄で時間をつぶすものがあります。
クイックスタート
Hello World!
研究の最も重要な段階。
fn main() { println!("Hello, world!"); }
? fn, , , println!. , . .
, fn. PROCEDURE, , Shift . , . main() . . void, . void . - .
. , , 70-. . BEGIN END, 21- . .
println! . . , , . , , ( , std). , println! 90- Log.String(«Hello, World!»). , .
. expression based . . . 90- END Main. , .
Cargo
. , . . 90- . . . Cargo toml — ini .
.
use std::io; fn main() { println!("Guess the number!"); println!("Please input your guess."); let mut guess = String::new(); io::stdin().read_line(&mut guess) .ok() .expect("Failed to read line"); println!("You guessed: {}", guess); }
, io std. Use std::io, Luke; , . , IMPORT StdIO, . . . , #. println! .
, . , , . , . . . , .
. . .
String . new() new(). io::stdin() println! .
.
extern crate rand;
, , use , . , , . , , . . .
match guess.cmp(&secret_number) { Ordering::Less => println!("Too small!"), Ordering::Greater => println!("Too big!"), Ordering::Equal => println!("You win!"), }
cmp() . Enum' c match. CASE, . . -. => , .
. break continue, . , , . . 90- , , . , .
Philosophers eat(). . , , &self ( this). 90- , 2015 . new, . .
vec!. . .
.
let handles: Vec<_> = philosophers.into_iter().map(|p| { thread::spawn(move || { p.eat(); }) }).collect();
, . . . , . , . . . 90- . . , . .
use std::sync::{Mutex, Arc};
.
— shared library.
, shared libraries Windows/Linux . , , (, , ), C. . . 2015- , dll , . , FFI. , - . , , — . , shared library.
#[no_mangle] pub extern fn process()
, . , , , . . , . . , . , - .
, , . , , .
. assert! . , .
. . , 2015- .
, , , , , /, , .
. HTML. .
, , , . - . 2015- . .
, , , , /. -.
FFI
- - . , . FFI, .
Borrow and AsRef traits
Trait , . - . , , . , , .
l4ngu4g3 6oN
5 . , . :
- , , ,
- if (-),
- transmute,
- unsafe
, , , scope, heap (- ), , , ,
, , ( ) . , , . , . , .
, . , . , - . .
, , , . , , , «» .
, , . , , . , , .
, . , , . , . , , , .
, , , . .
«» . . . .