ブレースの呪い

あなたが大企業だとしましょう。 ブラウザ、メーラー、さらにはスマートフォン向けの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 . , . :

, , , scope, heap (- ), , , , .



, , ( ) . , , . , . , .





, . , . , - . .



, , , . , , , «» .



, , . , , . , , .



, . , , . , . , , , .



, , , . .



«» . . . .



All Articles