Rust言語のいくつかの特性(式に基づくシステムプログラミング言語?)


1、let mut x = 10i; 学術的に言えばletは文法レベルの名前バインドを表す(valueオブジェクトへ)
println!マクロで、最初にそれを見たときはルビーを勉強していると思っていました.代表関数は副作用がありますね
destructuring let:バインドを解くという概念はLISP/Erlangから来ていますか?
2、式言語:ifは式である.セミコロンを付けると文になります.return x;直接的なxに等しい
また、if/for/whileの条件判断には()カッコを付けなくてもいいので、Swiftと一致します(ちょっと違和感があります)
3、関数プロトタイプ:fn f(x:int,y:&str)->(){...}
ここで使う文法スタイルはC++11、Scalaとあまり差がないようです.
4、Stringはutf-8符号化のUnicode文字列(k、強制符号化した)
  string.as_slice()="Hello"対比string=="Hello".to_string()ここの概念は少し変で、よく考えなければなりません(言語設計者はいったいどういう意味を表現したいのですか?)
5、Tuple、Struct、Tuple Struct--この3つの区別は面白いですが、Tupleという概念はPythonから来ているのではないでしょうか.C++STLのpairテンプレートに対応
6、Vector(配列)
let nums = [1i, ..20];//Shorthand for an array of 20 elements all initialized to 1
7、標準入力:
let input = std::io::stdin().read_line().ok().expect("Failed to read line"); //IoResult<T> ?

8、Cargoパッケージマネージャのプロファイル接尾辞名.tomlはあまりよくなくて、少し変な感じがします
9、rand::random::(); 鬼を見て、ここの関数のテンプレートの実例化の文法もとても奇妙で作者はいったい心を込めて言語を設計していますか??
10、crates(独立コンパイル単位?)モジュール
mod hello {
    pub fn print_hello() {
        println!("Hello, world!");
    }
}
11、集積のユニットテストサポート?
#[test]

ここのプロパティマークアップはなぜ#を追加しなければならないのですか?文法解析をVectorに誤解析するのを防止しますか?しかし、#は多くのスクリプト言語で行コメントとして使用されており、この設計はあまりよくありません.
12、ポインタ
(1)参照:let y=&x;字面定数を直接参照できます
let mut x = 5i;
let y = &mut x;

(2)所有関係、借用とライフサイクル
(3)箱詰め(原語をスタック対象にカプセル化?)(4)RcとArc:(自動)参照カウント、ループ参照は不可!
13、パターンマッチング
let mut x = 5i;

match x {
    ref mut x => println!("Got a mutable reference to {}", x),
}
14、閉パッケージ
let add_one = |x| { 1i + x };
15、proc(この概念はRubyから来ているはずですが、今coroutineがこんなに流行しているので、procは時代遅れになるかもしれません?)
16、反復器
for num in nums.iter() { ... }
追加しなければなりません.iter()ですか?
17、消費者(略)
18、再びScala/C#/Haskellを勉強する:
let x: Option<int> = Some(5i);

19、Traits(仮)
20、任务Tasks:ここはPython/Goなどのあるところと戦っている
21、Unsafe(~C#):外部数値計算モジュールと接続するために使用しますか?
ソース:http://doc.rust-lang.org/guide.html