一、环境

二、安装

$curl -sSf https://static.rust-lang.org/rustup.sh | sh

Welcome to Rust.

This script will download the Rust compiler and its package manager, Cargo, and
install them to /usr/local. You may install elsewhere by running this script
with the --prefix=<path> option. The installer will run under 'sudo' and may ask you for your password. If you do
not want the script to run 'sudo' then pass it the --disable-sudo flag. You may uninstall later by running /usr/local/lib/rustlib/uninstall.sh,
or by running this script again with the --uninstall flag. Continue? (y/N) y rustup: gpg not available. signatures will not be verified
rustup: downloading manifest for 'stable'
rustup: downloading toolchain for 'stable'
######################################################################## 100.0%
rustup: extracting installer
rustup: installing toolchain for 'stable'
Password:
install: creating uninstall script at /usr/local/lib/rustlib/uninstall.sh
install: installing component 'rustc'
install: installing component 'rust-std-x86_64-apple-darwin'
install: installing component 'rust-docs'
install: installing component 'cargo' Rust is ready to roll.

三、查看

$rustc --version

rustc 1.7.0 (a5d1e7a59 2016-02-29)

$cargo --version

cargo 0.8.0-nightly (28a0cbb 2016-01-17)
 

四、创建项目文件夹结构

$cd ~

$mkdir develop

$cd develop/

$mkdir rust-projects

$cd rust-projects/

$mkdir hello_world

$cd hello_world/

五、rust 之 helloworld

$vi main.rs

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

$rustc main.rs

$./main

Hello,world!
 

六、cargo 之 helloworld

当前文件夹在 hello_world

1、主要的cargo 命令行

$mkdir src

$mv main.rs src/main.rs

$rm main

$vi Cargo.toml

Cargo.toml的内容例如以下

[package]
name = "hello_world"
version = "0.0.1"
authors = ["teamlet@email.com"]

$cargo build

Compiling hello_world v0.0.1 (file:///Users/teamlet/develop/rust-projects/hello_world)
 

$./target/debug/hello_world

     Hello,world!
 

$cargo run

     Running `target/debug/hello_world`
Hello,world!

$cargo build --release

  Compiling hello_world v0.0.1 (file:///Users/teamlet/develop/rust-projects/hello_world)
 

$cat Cargo.lock

[root]
name = "hello_world"
version = "0.0.1"

2、cargo项目的管理工具

1) 自己主动生成项目

$cd ..

$mkdir cargo_test

$cd cargo_test/

$cargo new hello_world --bin

$cd hello_world/

$cat Cargo.toml //查看cargo自己主动生成的配置文件

[package]
name = "hello_world"
version = "0.1.0"
authors = ["teamlet <teamlet@mail.com>"] [dependencies]

$cd src/

$cat main.rs //查看cargo自己主动生成的helloworld代码

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

2)猜数游戏

$cd ..

$cargo new guessing_game --bin

$cd guessing_game/

$cargo build

   Compiling guessing_game v0.1.0 (file:///Users/teamlet/develop/rust-projects/guessing_game)
 

$cargo run

     Running `target/debug/guessing_game`
Hello, world!

$vi src/main.rs

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);
}

$cargo run

   Compiling guessing_game v0.1.0 (file:///Users/teamlet/develop/rust-projects/guessing_game)
Running `target/debug/guessing_game`
Guess the number!
Please input your guess.
5
You guessed:5

$vi Cargo.toml //添加 dependencies

[package]
name = "guessing_game"
version = "0.1.0"
authors = ["teamlet <teamlet@mail.com>"] [dependencies] rand = "^0.3.13"

$cargo build

    Updating registry `https://github.com/rust-lang/crates.io-index`
Downloading rand v0.3.13
Downloading winapi-build v0.1.1
Downloading advapi32-sys v0.1.2

假设出现 

unable to get packages from source

则须要多次重复运行 cargo build 或者 cargo build -verbose,直到

Downloading winapi v0.2.5
Compiling libc v0.2.8
Running `rustc /Users/teamlet/.cargo/registry/src/github.com-88ac128001ac3a9a/libc-0.2.8/src/lib.rs --crate-name libc --crate-type lib -g --cfg feature=\"default\" --cfg feature=\"use_std\" -C metadata=c1044b0a546bbfd6 -C extra-filename=-c1044b0a546bbfd6 --out-dir /Users/teamlet/develop/rust-projects/guessing_game/target/debug/deps --emit=dep-info,link -L dependency=/Users/teamlet/develop/rust-projects/guessing_game/target/debug/deps -L dependency=/Users/teamlet/develop/rust-projects/guessing_game/target/debug/deps --cap-lints allow`
Compiling winapi v0.2.5
Running `rustc /Users/teamlet/.cargo/registry/src/github.com-88ac128001ac3a9a/winapi-0.2.5/src/lib.rs --crate-name winapi --crate-type lib -g -C metadata=96db160368c72f00 -C extra-filename=-96db160368c72f00 --out-dir /Users/teamlet/develop/rust-projects/guessing_game/target/debug/deps --emit=dep-info,link -L dependency=/Users/teamlet/develop/rust-projects/guessing_game/target/debug/deps -L dependency=/Users/teamlet/develop/rust-projects/guessing_game/target/debug/deps --cap-lints allow`
Compiling winapi-build v0.1.1
Running `rustc /Users/teamlet/.cargo/registry/src/github.com-88ac128001ac3a9a/winapi-build-0.1.1/src/lib.rs --crate-name build --crate-type lib -g -C metadata=7bc4b8a4c9d61577 -C extra-filename=-7bc4b8a4c9d61577 --out-dir /Users/teamlet/develop/rust-projects/guessing_game/target/debug/deps --emit=dep-info,link -L dependency=/Users/teamlet/develop/rust-projects/guessing_game/target/debug/deps -L dependency=/Users/teamlet/develop/rust-projects/guessing_game/target/debug/deps --cap-lints allow`
Compiling advapi32-sys v0.1.2
Running `rustc /Users/teamlet/.cargo/registry/src/github.com-88ac128001ac3a9a/advapi32-sys-0.1.2/build.rs --crate-name build_script_build --crate-type bin -g --out-dir /Users/teamlet/develop/rust-projects/guessing_game/target/debug/build/advapi32-sys-911258561df3b2a9 --emit=dep-info,link -L dependency=/Users/teamlet/develop/rust-projects/guessing_game/target/debug/deps -L dependency=/Users/teamlet/develop/rust-projects/guessing_game/target/debug/deps --extern build=/Users/teamlet/develop/rust-projects/guessing_game/target/debug/deps/libbuild-7bc4b8a4c9d61577.rlib --cap-lints allow`
Running `/Users/teamlet/develop/rust-projects/guessing_game/target/debug/build/advapi32-sys-911258561df3b2a9/build-script-build`
Running `rustc /Users/teamlet/.cargo/registry/src/github.com-88ac128001ac3a9a/advapi32-sys-0.1.2/src/lib.rs --crate-name advapi32 --crate-type lib -g -C metadata=911258561df3b2a9 -C extra-filename=-911258561df3b2a9 --out-dir /Users/teamlet/develop/rust-projects/guessing_game/target/debug/deps --emit=dep-info,link -L dependency=/Users/teamlet/develop/rust-projects/guessing_game/target/debug/deps -L dependency=/Users/teamlet/develop/rust-projects/guessing_game/target/debug/deps --extern winapi=/Users/teamlet/develop/rust-projects/guessing_game/target/debug/deps/libwinapi-96db160368c72f00.rlib --cap-lints allow`
Compiling rand v0.3.13
Running `rustc /Users/teamlet/.cargo/registry/src/github.com-88ac128001ac3a9a/rand-0.3.13/src/lib.rs --crate-name rand --crate-type lib -g -C metadata=340832a8942cb900 -C extra-filename=-340832a8942cb900 --out-dir /Users/teamlet/develop/rust-projects/guessing_game/target/debug/deps --emit=dep-info,link -L dependency=/Users/teamlet/develop/rust-projects/guessing_game/target/debug/deps -L dependency=/Users/teamlet/develop/rust-projects/guessing_game/target/debug/deps --extern libc=/Users/teamlet/develop/rust-projects/guessing_game/target/debug/deps/liblibc-c1044b0a546bbfd6.rlib --extern advapi32=/Users/teamlet/develop/rust-projects/guessing_game/target/debug/deps/libadvapi32-911258561df3b2a9.rlib --extern winapi=/Users/teamlet/develop/rust-projects/guessing_game/target/debug/deps/libwinapi-96db160368c72f00.rlib --cap-lints allow`
Compiling guessing_game v0.1.0 (file:///Users/teamlet/develop/rust-projects/guessing_game)
Running `rustc src/main.rs --crate-name guessing_game --crate-type bin -g --out-dir /Users/teamlet/develop/rust-projects/guessing_game/target/debug --emit=dep-info,link -L dependency=/Users/teamlet/develop/rust-projects/guessing_game/target/debug -L dependency=/Users/teamlet/develop/rust-projects/guessing_game/target/debug/deps --extern rand=/Users/teamlet/develop/rust-projects/guessing_game/target/debug/deps/librand-340832a8942cb900.rlib`

改动代码,生成随机数

$vi src/main.rs

extern crate rand;

use std::io;
use rand::Rng; fn main() {
println!("Guess the number!"); let secret_number = rand::thread_rng().gen_range(1, 101); println!("The secret number is: {}", secret_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);
}

$cargo build

Compiling guessing_game v0.1.0 (file:///Users/teamlet/develop/rust-projects/guessing_game)
 

$cargo run

     Running `target/debug/guessing_game`
Guess the number!
The secret number is: 55
Please input your guess.
4
You guessed: 4

參考文章地址:

https://doc.rust-lang.org/book/getting-started.html

https://doc.rust-lang.org/book/guessing-game.html

Rust 的安装和使用举例的更多相关文章

  1. 【Rust】Rust的安装和配置

    -----------------------参考文档------------------------------------- https://www.rust-lang.org/tools/ins ...

  2. Rust 指定安装目录

    集群home目录被管理员限制了存储空间,rust安装要100多M,默认安装home目录下,查了一圈,没找到rust指定安装目录的办法. 这里记录下解决办法: 在想要安装的目录执行 mkdir -p c ...

  3. 【rust】rust安装,运行第一个Rust 程序 (1)

    安装 Rust 在 Unix 类系统如 Linux 和 macOS 上,打开终端并输入: curl https://sh.rustup.rs -sSf | sh 回车后安装过程出现如下显示: info ...

  4. Rust安装-运行第一个程序-hello_world

    Rust官网:https://rust-lang.org/ 安装 点击install,选择版本 选择相对应的版本进行下载 我这里下载的是windows系统,运行下载好的exe文件,根据需要选择选对应的 ...

  5. 不用rustup,Windows下gnu版Rust安装与开发环境配置

    写在前面 本文介绍了在不使用rustup的情况下,在Windows上安装gnu版的Rust,并配置开发环境(VSCode + rust-analyzer,CLion + IntelliJ Rust)的 ...

  6. 【MySQL】MySQL无基础学习和入门之二:MySQL的安装

    安装MySQL安装一般分为源码包编译安装.分发包.rpm包安装和yum安装,四种安装方式有一些区别,对应的适用场景也不一样. 源码包:源码包就是程序源代码包,其中包含程序代码文件,这些代码文件是文本型 ...

  7. 安装成功的nginx如何添加未编译安装模块

    原已经安装好的nginx,现在需要添加一个未被编译安装的模块举例说明:安装第三方的ngx_cache_purge模块(用于清除指定URL的缓存)nginx的模块是需要重新编译nginx,而不是像apa ...

  8. 原已经安装好的nginx,现在需要添加一个未被编译安装的模块--echo-nginx-module-0.56

    为了测试一个NGINX变量,将NGINX加了一个编译模板echo-nginx-module-0.56. 参照如下文件 1,先看以前NGINX有哪些东东. sbin/nginx -Vnginx vers ...

  9. Win10系统下安装Oracle服务器和Oracle客户端

    工作电脑从Win7换为Win10,在给Win10系统安装Oracle时花费了很长世间终于搞定,在此给大家分享下. 1.工作中需要连接测试环境.生产环境Oracle,所以安装了公司封装的Oracle客户 ...

随机推荐

  1. Revit Family API 找到实体某一方向上的面。

    PlanarFace.Normal取得向量.IsAlmostEqualTo判断向量是否一致. // ================================================== ...

  2. Revit Family API 添加几何实体

    先创建一个封闭曲线createProfileLShape();再创建实体,这里需要手工画一个参考平面; ; i < nVerts; ++i)        {            Line l ...

  3. .Net Discovery 系列之一--string从入门到精通(上)

    string是一种很特殊的数据类型,它既是基元类型又是引用类型,在编译以及运行时,.Net都对它做了一些优化工作,正式这些优化工作有时会迷惑编程人员,使string看起来难以琢磨,这篇文章分上下两章, ...

  4. YII框架分析笔记2:组件和事件行为管理

    Yii是一个基于组件.用于开发大型 Web 应用的高性能 PHP 框架.CComponent几乎是所有类的基类,它控制着组件与事件的管理,其方法与属性如下,私有变量$_e数据存放事件(evnet,有些 ...

  5. Java POI 3.17写入、导入EXCEL性能测试

    我们先测试一下写入 50000 条 程序源码: 写入的excel文件信息 再看一下文件的结构 我们再次测试一下导入数据库的性能(用移动的网络上传至电信服务器): 在导入的过程中也可以中止导入行为: 上 ...

  6. nginx反向代理vue访问时浏览器加载失败,出现 ERR_CONTENT_LENGTH_MISMATCH 问题

    问题说明:测试机上部署了一套业务环境,nginx反向代理tomcat,在访问时长时间处于加载中,十分缓慢! 通过浏览器调试(F12键->Console),发现有错误ERR_CONTENT_LEN ...

  7. winform中的TreeView的数据绑定

    #region 绑定TreeView /// <summary> /// 绑定TreeView(利用TreeNode) /// </summary> /// <param ...

  8. Linux常用命令汇总 - Linux Shell Cheat Sheet

    1. 查看Linux操作系统信息: uname -a cat /proc/version lsb_release -a 2. 设置ls显示的文件夹的颜色(将下面这条目录加在 .bashrc 文件最后) ...

  9. Guava CharMatcher

    概述 CharMatcher提供了多种对字符串处理的方法, 它的主要意图有: 1. 找到匹配的字符 2. 处理匹配的字符 CharMatcher内部主要实现包括两部分: 1. 实现了大量公用内部类, ...

  10. maven配置sqlServer的依赖

    配置sqlServer的依赖 <dependency> <groupId>com.microsoft.sqlserver</groupId> <artifac ...