あなたが大企業だとしましょう。 ブラウザ、メーラー、さらにはスマートフォン向けのOSの開発に従事。 突然、あなたは現代的で強力なC ++言語が好きではないことに気付きます。 まあ、またはそれが好きですが、彼と働くことは不可能です。 それは起こります。 そして今、あなたは大人の安定した会社が新しいプログラミング言語を開発することに決めました。 レシピは簡単です。 1バレルのお金、ITの歴史に関する本、プログラマーの会社、MacBukovトラックを受け取ります。 ソーシャルネットワーク(reddit、facebook、github)で誇大広告を生み出し、すばやくコーディングします。 したがって、2015年には、コミュニティに言語を提供します。 彼をヤイストと呼びましょう。
言語は専門家向けのツールです。 専門職による作品は専門家を意味します。 新しい言語を学ぶとき、専門家は最初に何を読みますか? もちろん、同僚の
客観的な意見 。 それは主にポジティブです。 同僚の意見に従って、専門家
は言語の
説明を読みます。 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()
Shared Library .
, . , , , . . , . . , . , - .
, , . , , .
.
assert! . , .
. . , 2015- .
, , , , , /, , .
. HTML. .
, , , . - . 2015- . .
, , , , /. -.
FFI
- - . , . FFI, .
Borrow and AsRef traits
Trait , . - . , , . , , .
l4ngu4g3 6oN
5 . , . :
- , , ,
- if (-),
- transmute,
- unsafe
, , , scope, heap (- ), , , ,
.
, , ( ) . , , . , . , .
, . , . , - . .
, , , . , , , «» .
, , . , , . , , .
, . , , . , . , , , .
, , , . .
«» . . . .