安装
# 安装正式版本, 下载安装脚本
[root@localhost ~]# wget https://sh.rustup.rs -O rustup-init.sh
[root@localhost ~]# chmod 755 rustup-init.sh
# 运行安装脚本, 交互提示选择1默认安装
[root@localhost ~]# ./rustup-init.sh
# 或者 安装nightly版本
[root@localhost ~]# wget https://static.rust-lang.org/rustup.sh -O rustup-nightly.sh
[root@localhost ~]# chmod 755 rustup-nightly.sh
[root@localhost ~]# ./rustup-nightly.sh --channel=nightly
# 查看安装好了之后, rust 各组件命令的二进制文件.
[root@localhost ~]# ls ~/.cargo/bin/
cargo rls rustc rustdoc rust-gdb rust-lldb rustup
# 手动将rust可执行文件目录加入到系统环境变量.
# 下次再次登录时就可以直接运行rust相关命令了.
[root@localhost ~]# echo "export PATH=\"$HOME/.cargo/bin:$PATH\" " >> ~/.bashrc
补充说明
rust并不会像其他编程语言一样, 直接将所有命令放置在系统的标准位置; 而是放置在当前用户的~/.cargo/bin目录下, 我的理解是谁安装它就谁可以用它, 由于我现在是处于学习状态, 所以暂时就不考虑如何标准部署安装.
- cargo 是一个包管理器、项目工程依赖发布管理工具
- rustc 是rust语言的解释器
- rustup 是一个升级或者卸载的工具
- 其他暂时不知道
验证
运行命令
# 将rust科执行文件路径加入到当前环境变量中
[root@localhost ~]# source ~/.bashrc
# 运行rustc, 查看版本号
[root@localhost ~]# rustc --version
rustc 1.18.0 (03fc9d622 2017-06-06)
重新登录, 再次运行
# 退出当前登录
[root@localhost ~]# exit
# 再次登录(不需要执行 source ~/.bashrc)
[root@localhost ~]# rustc --version
rustc 1.18.0 (03fc9d622 2017-06-06)
Hello World
使用 cargo
创建一个项目
# 创建一个项目集目录
[root@localhost ~]# mkdir projects
[root@localhost ~]# cd projects/
# 用cargo创建一个helloworld程序目录
[root@localhost projects]# cargo new helloworld --bin
Created binary (application) `helloworld` project
# 进入程序目录
[root@localhost projects]# cd helloworld
# 查看cargo都做了什么
[root@localhost helloworld]# ls
Cargo.toml src
# 查看main.rs源文件
[root@localhost helloworld]# cat src/main.rs
fn main() {
println!("Hello, world!");
}
# 查看Cargo.html文件
[root@localhost helloworld]# cat Cargo.toml
[package]
name = "helloworld"
version = "0.1.0"
authors = ["zhengtong <zhengtong0898@aliyun.com>"]
[dependencies]
# 运行代码
[root@localhost helloworld]# cargo run
Compiling helloworld v0.1.0 (file:///root/projects/helloworld)
Finished dev [unoptimized + debuginfo] target(s) in 0.46 secs
Running `target/debug/helloworld`
Hello, world!
不使用 cargo
创建一个项目
[root@localhost ~]# cd ~/projects/
# 创建helloworld_manual项目目录
[root@localhost ~]# mkdir ~/helloworld_manual
[root@localhost ~]# cd ~/helloworld_manual
# 创建程序文件
[root@localhost helloworld_manual]# vim main.rs
fn main() {
println!("Hello, world!");
}
# 将源代码编译成二进制文件
[root@localhost helloworld_manual]# rustc main.rs
# 查看变编译后的文件分布状态
[root@localhost helloworld_manual]# ls
main main.rs
# 运行main二进制文件
[root@localhost helloworld_manual]# ./main
Hello, world!
rust 是工程语言
不知道在哪, 反正就是听说了rust是一名工程性质的语言, 它对项目的工程化是比较有要求的; 因此专门开发了一个cargo工具, 通过cargo我可以将编译、运行两个拆分执行步骤合并到一起, 只需要cargo run它就会帮我编译然后帮我运行程序。
-
fn
声明一个函数的定义 -
main
是函数名称, 同事它也是一个特殊的函数, 它在项目文件中是必须存在的, 运行入口在这里. -
括号
()
括号用来传递参数. -
println!
是rust内置的打印到标准输出的命令, !是一个宏(macro), 暂时还不是很清楚它的本质含义. -
分号
;
每行执行代码(花括号后面不需要)后面都要写上分号. -
rustc
用来将源代码文件编译成二进制文件, 它会检查语法. -
cargo
在单一文件中看不出来它的作用, 但是实际上它负责着项目依赖组件的管理(自动下载)、更新和各个依赖组件的版本号控制; -
cargo run
将编译和运行两个步骤合并在一起;
网友评论