rust编程语言(chapter 1)

目录

1. rust安装

2. Hello Rust

3. Cargo包管理器

3.1 cargo简介

3.2 cargo创建项目

3.3 构建和运行项目

3.4 debug和release版本构建


1. rust安装

rust提供了一个命令行的工具rustup,可以用来管理和安装rust的版本以及相关的工具集。

那么首先,来下载和安装rustup这个工具(linux为例):

# curl --proto '=https' --tlsv1.2 https://sh.rustup.rs -sSf > rustup.sh
# sh rustup.sh

默认安装了最新版本的rust的语言包和编译器,需要注意的是,rust没有单独的链接器(linker),需要单独安装第三方的linker。在linux环境下,通常使用GCCClang就可以了。链接器将多个目标文件,链接成为一个目标文件(可执行文件或库)。 例如:ubuntu,执行apt-get install build-essential即可。

  • rust检查

# rustc --version rustc 1.65.0 (897e37553 2022-11-02)

版本号格式:x.y.z(major.minor.patch),主版本号.次版本号.patch版本号(commit号)。

  • rust更新:

# rustup update
  • rust卸载:

# rustup self uninstall

2. Hello Rust

安装完成rust,手动来写第一个hello world的rust程序。

  • 创建工程目录

// 创建工程目录
# mkdir hello 
# cd hello/  
# touch main.rs 
# vim main.rs
// main.rs
fn main()
{
    println!("hello rust!");
}

fn main() {}定义了一个rust函数,这里的main函数是特殊的函数,是rust可执行程序的执行点。该函数无参数且无返回值。与C语言一致,()小括号中是函数参数,{}内是函数体。

rust官方提供了一个格式化源代码的工具rustfmt,如下:

# rustfmt main.rs 
# cat main.rs
fn main() {
    println!("hello rust!");
}
// 编译+运行 
# rustc main.rs 
# ls main main.rs 
# ./main hello rust!

rust使用4个空格进行缩进,而非Tab。

println!实际是一个rust宏,包含!号的一般都是rust提供的宏函数,普通函数的调用,不包含!号。

rust源代码以分号;结束一行表达式(expression)的定义,与C语言一致。

3. Cargo包管理器

单个rust源代码文件的编译比较简单,用rustc足够了。但是项目比较大时,应该使用cargo项目(包)管理器来管理rust的源代码文件,以及做代码的共享。

3.1 cargo简介

cargo是rust项目的构建系统和包管理器。可以使用该工具管理rust工程的多个任务,例如:编译代码、下载依赖库、构建库等。

随着工程项目的复杂度提升,会添加一系列的rust库依赖,使用cargo十分方便地管理依赖包(下载和版本)。因此,专集的后续章节都使用cargo来构建项目。

安装rustc编译器的同时,就会按照cargo,如下:

3.2 cargo创建项目

# cargo new hello_cargo
     Created binary (application) `hello_cargo` package
# cd hello_cargo/
# ls -sl
total 8
4 -rw-r--r-- 1 root root  180 11月 13 17:07 Cargo.toml
4 drwxr-xr-x 2 root root 4096 11月 13 17:07 src
# ls src
main.rs
# cat Cargo.toml
[package]
name = "hello_cargo"
version = "0.1.0"
edition = "2021"

# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html

[dependencies]

cargo的package section指定了当前工程构建的包信息,dependencies section指定了当前工程依赖的第三方包信息。

在rust中,代码(依赖)包被称作crates。当前工程中,不依赖其他包,因此为空。

cargo假设rust的源代码位于src目录中,最顶层目录中只存放README,license文件,配置文件等代码无关的文件。

3.3 构建和运行项目

# cargo build
   Compiling hello_cargo v0.1.0 (/root/rust/hello_cargo)
    Finished dev [unoptimized + debuginfo] target(s) in 0.31s
# cargo run
    Finished dev [unoptimized + debuginfo] target(s) in 0.00s
     Running `target/debug/hello_cargo`
Hello, world!

cargo check子命令快速检查源代码语法是否正确,而不必编译。

3.4 debug和release版本构建

直接使用cargo build构建的是debug版本,可以使用cargo build --release来生成release版本的构建。release版本是经过编译器优化的,运行更快。

总结:cargo管理的各个项目(包)之间的版本依赖关系,通常在新的项目目录可以直接执行cargo build来构建工程项目。

关于作者:

犇叔,浙江大学计算机科学与技术专业,研究生毕业,而立有余。先后在华为、阿里巴巴和字节跳动,从事技术研发工作,资深研发专家。主要研究领域包括虚拟化、分布式技术和存储系统(包括CPU与计算、GPU异构计算、分布式块存储、分布式数据库等领域)、高性能RDMA网络协议和数据中心应用、Linux内核等方向。

专业方向爱好:数学、科学技术应用

关注犇叔,期望为您带来更多科研领域的知识和产业应用。

内容坚持原创,坚持干货有料。坚持长期创作,关注犇叔不迷路

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

敩科炼技堂

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值