Rust 基础(一)
admin
2024-01-22 18:42:27
0

一、windows 安装

1.1 Rustup

Rust安装程序和版本管理工具

1.1.1 RUSTUP_HOME

Rustup元数据工具链将被安装到Rustup主目录中
默认: %USERPROFILE%\.rustup

1.1.2 使用

rustup.exe [FLAGS] [+toolchain] 

FLAGS

ARGS

<+toolchain>    release channel (e.g. +stable) or custom toolchain to set override

SUBCOMMANDS

1) doc
打开当前工具链的文档

# 打开 The Rust Programming Language
rustup docs --book 

2) update
更新Rust工具链和 rustup

3)self
修改rustup安装
To uninstall Rust and rustup

rustup self uninstall

1.2 Cargo

Rust 构建工具和包管理器
有关Cargo的更多信息

1.2.1 CARGO_HOME

Cargo主目录
cargo、rustc、rustup等命令将被添加到Cargo的bin目录,位于:
%USERPROFILE%\.cargo\bin

1.2.2 使用

cargo [+toolchain] [OPTIONS] [SUBCOMMAND]

cargo build / b

编译当前包

cargo run

运行项目

cargo test

运行测试

cargo doc / d

构建这个包及其依赖项的文档

cargo publish

将库发布到crates.io

cargo install

Install a Rust binary. Default location is $HOME/.cargo/bin

为了测试已经安装了Rust和Cargo,可以在终端上运行:

cargo --version
#cargo 1.65.0 (4bc8f24d3 2022-10-20)

cargo new(init)

cargo new --help

为我们生成“Hello, world!”项目!我们可以通过移动到我们创建的新目录并在终端中运行这个程序: cargo run

init : 在现有目录中创建一个新的 cargo 包

cargo add

Add dependencies to a manifest file

Cargo check

这个命令可以快速检查你的代码,确保它可以编译,但不会生成可执行文件

1.2.3 rustc

Rust编译器

在Linux或macOS上安装rust

curl --proto '=https' --tlsv1.3 https://sh.rustup.rs -sSf | sh

该命令下载一个脚本并开始安装Rust工具,该工具将安装Rust的最新稳定版本。
Rustup 默认目录:$HOME/.rustup
Cargo 默认目录:$HOME/.cargo

查看环境变量

In Windows CMD, use: echo %PATH%
In PowerShell, use: echo $env:Path
In Linux and macOS, use: echo $PATH

二、入门

2.1 编写和运行Rust程序

Rust文件总是以.rs扩展名结束。
如果在文件名中使用了多个单词,约定使用下划线分隔它们。例如,使用hello_world。Rs而不是helloworld.rs。

文件:main.rs

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

编译并运行该文件:

$ rustc main.rs
$ ./main
Hello, world!

2.1.1 Rust程序的解剖

1)

fn main() {}

这几行定义了一个名为main的函数。main 函数很特殊:它总是运行在每个可执行Rust程序中的第一个代码。
如果有参数,它们将放在括号()中。
函数体被包装在{}中

将左花括号与函数声明放在同一行上,中间加一个空格是很好的风格。
如果想在Rust项目中坚持一个标准的样式,可以使用一个名为rustfmt的自动格式化工具以特定的样式格式化您的代码(关于rustfmt的更多信息)。
2)

    println!("Hello, world!");

首先,Rust样式是用四个空格缩进,而不是制表符。
第二, println !调用了一个 Rust宏(Rust macro)。
如果它调用了一个函数,那么它将被输入为println(不带!)。

使用!意味着调用的是宏而不是普通函数,而且宏并不总是遵循与函数相同的规则。

第三,我们将“Hello, world!”字符串作为参数传递给println!
第四,我们用分号(;)结束这一行,这表示这个表达式结束了,下一个已经准备好开始了。Rust代码的大多数行都以分号结尾

2.1.2 编译和运行是独立的步骤

在运行Rust程序之前,必须使用Rust编译器编译它,输入rustc命令并传入源文件的名称,像这样:

rustc main.rs

如果有C或c++背景,您会注意到这类似于gcc或clang。编译成功后,Rust输出一个二进制可执行文件。

在使用Windows时,包含扩展名为.pdb的调试信息的文件(main.pdb)

如果更熟悉动态语言,如Ruby、Python或JavaScript,可能不习惯将程序编译和运行作为单独的步骤。
Rust是一种预先编译的语言,这意味着您可以编译一个程序并将可执行文件交给其他人,他们甚至可以在没有安装Rust的情况下运行它。如果您给某人一个.rb、.py或.js文件,他们需要(分别)安装一个Ruby、Python或JavaScript实现。

对于简单的程序,用rustc编译就可以了,

2.2 Hello, Cargo!

大多数Rustaceans使用这个工具来管理他们的Rust项目,因为Cargo为您处理了很多任务,比如构建代码、下载代码所依赖的库,以及构建这些库。(我们称代码需要的库为依赖项(dependencies)。)

绝大多数Rust项目都使用Cargo

2.2.1 生成一个新项目

首先,我们将使用Cargo为我们创建一个新项目

cargo new hello-rust
#Created binary (application) `hello-rust` package

这将生成一个名为hello-rust的新目录和项目,包含以下文件:

hello-rust
|- Cargo.toml
|- src|- main.rs

Cargo.toml

[package]
name = "hello_rust"
version = "0.1.0"
edition = "2021"# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html[dependencies]

是Rust的清单文件。它是保存项目元数据以及依赖项的地方
该文件是TOML (Tom 's Obvious, Minimal Language)格式,这是Cargo的配置格式。

第一行[package]是一个节(section )的标题,表示下面的语句正在配置一个包
接下来的三行设置了Cargo编译程序所需的配置信息:名称、版本和要使用的Rust版本。我们将在附录E中讨论版本键。
最后一行[dependencies]是列出项目依赖项的部分的开始。在Rust中,代码包被称为crates。在这个项目中我们不需要任何其他的crates

src/main.rs 是我们编写应用程序代码的地方

它还初始化了一个新的Git存储库和一个.gitignore文件。如果在现有的Git存储库中运行cargo new,则不会生成Git文件;你可以通过使用cargo new --vcs=git来覆盖这种行为

注意:Git是一个通用的版本控制系统。通过使用--vcs标志,你可以改变cargo new使用不同的版本控制系统或不使用版本控制系统。运行cargo new --help查看可用选项。

Cargo希望源文件位于src目录中。顶级项目目录仅用于存放README文件、许可信息、配置文件和其他与代码无关的内容。使用Cargo可以帮助您组织项目。每样东西都有一个地方,每样东西都在它的地方。

2.2.2 建立和运行一个Cargo 项目

hello_rust目录中,输入以下命令构建项目:

cargo build

这个命令在target/debug/hello_rust(或在Windows上target\debug\hello_rust.exe)中创建一个可执行文件,而不是在当前目录中。
因为默认构建是调试构建,所以Cargo将二进制文件放在名为debug的目录中。你可以用这个命令运行可执行文件:

$ ./target/debug/hello_rust # or .\target\debug\hello_rust.exe on Windows
Hello, world!

第一次运行cargo build还会导致cargo在顶层创建一个新文件:cargo .lock。该文件跟踪项目中依赖项的确切版本。这个项目没有依赖项,所以文件有点稀疏。你不需要手动修改这个文件;Cargo为您管理它的内容。

我们也可以使用cargo run来编译代码,然后运行可执行文件

Cargo还提供了一个名为Cargo check的命令。这个命令可以快速检查你的代码,确保它可以编译,但不会生成可执行文件
通常,cargo checkcargo build,要快得多,因为它跳过了生成可执行文件的步骤。
使用Cargo的另一个优点是,无论在哪个操作系统上工作,命令都是相同的。

2.2.3 Building for Release

当项目最终准备好发布时,可以使用cargo build --release对其进行优化编译。这个命令将在target/release而不是target/debug中创建一个可执行文件。
如果正在对代码的运行时间进行基准测试,请确保运行cargo build --release和使用target/release中的可执行文件进行基准测试。

2.2.4 Cargo 作为约定

尽管hello_rust项目很简单,但它现在使用了将在Rust职业生涯的其余部分中使用的许多实际工具。
有关Cargo的更多信息

2.2.5 添加依赖

你可以在 crates.io(Rust的包注册中心)上找到各种各样的库。 在Rust中,我们经常将包称为“crate”。
在Cargo.toml文件中,添加以下信息(可从crate 页面):

[dependencies]
ferris-says = "0.2"

Now we can run:

cargo build

Cargo将为我们安装依赖项。

您将看到运行此命令为我们创建了一个新文件Cargo.lock。该文件是本地使用的依赖项的确切版本的日志。
在main.rs中

use ferris_says::say;
use std::io::{stdout, BufWriter};fn main() {let stdout = stdout();let message = String::from("Hello fellow Rustaceans!");let width = message.chars().count();let mut writer = BufWriter::new(stdout.lock());say(message.as_bytes(), width, &mut writer).unwrap();
}

相关内容

热门资讯

原创 6... 周末去看房的人,情绪比以前复杂得多。售楼处里灯光还是亮,样板间还是精致,销售的话术却变了。前些年最常...
监管批复!陶曦就任成都银行行长... 2026年6月23日,根据国家金融监督管理总局消息,《成都银行股份有限公司关于陶曦高级管理人员任职资...
港股AI双雄遭空头伏击 7月超... 财联社6月23日讯(编辑 胡家荣)港股AI大模型板块的两大领头羊——智谱(02513.HK)与MIN...
山西运城:高度重视,已组成联合... “盐湖公安”微信公号、浪潮新闻 6月23日,山西省运城市公安局盐湖分局发布警情通报: 近日,网络平台...
监管批复!向云勇就任湖南吉首农... 2026年6月23日,根据国家金融监督管理总局消息,《湖南吉首农村商业银行股份有限公司关于对向云勇同...
曹操出行(2643.HK)Ro... 过去几年,大模型让AI完成了从“会聊天”到“会思考”的跨越。随着模型能力不断提升,产业关注点也开始从...
原创 金... 2026年6月23日,金价处在回调震荡阶段,水贝足金首饰批发价挂到1076元每克,但周大福、周生生那...
字节跳动CEO梁汝波:收缩业务... 在6月23日举行的火山引擎Force大会上,字节跳动CEO梁汝波表示,AI的影响力至少不亚于PC、W...
香港黄金交易平台第一梯队有哪些... 香港一直是亚洲重要的黄金交易中心。很多人在选择黄金交易平台时,面对大量的品牌,难免会感到困惑。香港黄...
WAVES 2026:今年盛夏... 盛夏赴约WAVES 2026!一群迎风的少数人,掀起中国新一代创新力量的风口。 2026年,创投圈的...
高鑫零售,试水“第三条路” 6月18日,盐城首家M会员商店轻享店在江苏盐南高新区佳源广场试营业。这是大润发母公司高鑫零售旗下全国...
28家企业排队,美妆IPO迎来... 沉寂三年后,美妆IPO重新热了起来。 2020年至2021年,是中国美妆企业上市的“黄金窗口”。贝泰...
原创 套... #格力第一大股东套现近 15.9 亿 #,格力电器正式发布减持结果公告,公司第一大股东珠海明骏(高瓴...
原创 昆... 6月23日,昆仑行机器人宣布,公司自2026年3月注册成立不足90天内,接连完成三轮融资,累计规模达...
心智观察所:从磷化铟的故事看中... 【文/观察者网 心智观察所 】 云南锗业的股价在2026年4月跑出了一波让人困惑的行情。 这家以锗为...
马云带着一群阿里合伙人,下田插... “马云带着一群阿里合伙人下田插秧,此次插秧团建的“同事们”阵容强大,吴泳铭、邵晓锋、蒋凡、吴泽明、蒋...
胖东来近半年累计销售额超139... 上证报中国证券网讯 6月22日晚,胖东来创始人于东来通过社交平台分享了集团近半年的经营情况。数据显示...
原创 帮... 达沃斯开幕+长川/卫星中报开门红:今天A股走“业绩提纯”,别蹭概念刀口舔血 老铁们,今天的早观察关键...
原创 腾... 原创首发 | 金角财经(ID: F-Jinjiao) 作者 | 田羽 “中国AMD”准备登陆A股了。...
于东来:胖东来拟制定夫妻或孩子... 来源:快科技 6月22日晚,胖东来创始人于东来通过个人账号“傻坏蛋于东来”透露多项员工福利升级计划。...