Rust 從基礎(chǔ)到實(shí)踐(1)

cargo new hello_world

運(yùn)行命令后就我們創(chuàng)建好一個(gè) rust 項(xiàng)目,我們看一下剛剛創(chuàng)建好的 hello_world 項(xiàng)目,cargo 有點(diǎn)類(lèi)似 npm,我們用 npm 管理 javascript 項(xiàng)目,而用 cargo 來(lái)管理 rust 項(xiàng)目。


屏幕快照 2019-03-08 下午8.14.34.png
  • Cargo.toml
[package]
name = "hello_world"
version = "0.1.0"
authors = ["jangwoo <zidea2015@163.com>"]
edition = "2018"

[dependencies]

package 中包含我們項(xiàng)目的基本信息
dependencies 應(yīng)該是項(xiàng)目的依賴
看 src 文件夾下的 main.rs

fn main() {
    println!("Hello, world!");
}

運(yùn)行這個(gè)命令就可以查看項(xiàng)目輸出了,第一次可能花一些時(shí)間。

cargo run

學(xué)習(xí) c++ 或其他語(yǔ)言時(shí)候,開(kāi)始我們都喜歡以一個(gè)文字游戲開(kāi)始學(xué)習(xí)的旅程。

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)
        .expect("Failed to read line");

    println!("You guessed: {}", guess);
}

運(yùn)行結(jié)果,提示我們輸入一個(gè)數(shù)字,我們輸入后回車(chē),會(huì)顯示我們輸入的數(shù)值


屏幕快照 2019-03-08 下午8.33.51.png

我們對(duì)比其他語(yǔ)言,特別是 c++ 來(lái)學(xué)習(xí) rust。首先搭建 rust 和運(yùn)行編譯都感覺(jué)比 c++ 要容易些。

  • use::io 表示引入輸入輸出的庫(kù)
  • fn 表示主函數(shù)
  • println! 用于輸出內(nèi)容到屏幕上
  • mut 表示 guess 是一個(gè)可變得變量,rust 默認(rèn)是不可變的變量
  • String::new() :: 表示調(diào)用 String 類(lèi)的靜態(tài)方法
  • & 表示引用,使用引用是為了節(jié)省內(nèi)存,無(wú)需將數(shù)據(jù)復(fù)制一份,引用是 rust 的難點(diǎn)也是 rust 的優(yōu)點(diǎn)。
  • &mut guess 表示一個(gè)可變引用,如果使用 &guess表示不可變的引用

在 rust 變量默認(rèn)是不可變(immutable),這樣也是 rust 的可愛(ài)之處,因?yàn)?immutable 提高安全性,且便于并發(fā)。

fn main() {
    let x = 5;
    println!("The value of x is: {}", x);
    x = 6;
    println!("The value of x is: {}", x);
}
error[E0384]: cannot assign twice to immutable variable `x`

但有的時(shí)候我們不可避免,將 x 轉(zhuǎn)變?yōu)?mutable 可變量。

let mut x = 5;
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

推薦閱讀更多精彩內(nèi)容

  • 通用編程概念 變量與可變性 變量默認(rèn)不可變,如需要改變,可在變量名前加 mut 使其可變。例如:let mut a...
    soojade閱讀 12,601評(píng)論 2 30
  • 緣起 本來(lái)這一系列文章并不在計(jì)劃中。昨天跟一些同事討論沒(méi)有GC管理內(nèi)存的問(wèn)題。討論到?jīng)]有GC情況下管理內(nèi)存的學(xué)習(xí)曲...
    Jtag特工閱讀 16,524評(píng)論 2 48
  • 在Java世界工作了10年之后,我最近更認(rèn)真地看待Rust。我?guī)缀鯖](méi)有開(kāi)始Rust編程(即,我是一個(gè)完整的新手),...
    FrederickLei閱讀 8,165評(píng)論 0 9
  • 首先要明確的一點(diǎn)就是 rust 是系統(tǒng)級(jí)別的底層開(kāi)發(fā)語(yǔ)言。與 c++ 處于同一層面。rust 有可能在將來(lái)逐步取代...
    zidea閱讀 713評(píng)論 0 7
  • Swift1> Swift和OC的區(qū)別1.1> Swift沒(méi)有地址/指針的概念1.2> 泛型1.3> 類(lèi)型嚴(yán)謹(jǐn) 對(duì)...
    cosWriter閱讀 11,136評(píng)論 1 32