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

相关内容

热门资讯

1282列!石家庄国际陆港20... (来源:河北新闻网) 转自:河北新闻网 长城网·冀云客户端1月15日讯(记者 袁立朋 通讯员 余陈军...
原创 1... 周五早盘,沪深A股主要的大盘指数高开幅度明显,最终高开低走。盘面上看,多数个股下跌,人气一般。周五午...
康希诺生物:创新支撑盈利拐点已... 新年伊始,港股与A股市场迎来了一波“开门红”行情。步入2026年,多家头部外资机构在年度展望中释放积...
Omdia:AI推动半导体行业... 机构 Omdia 在英国伦敦当地时间昨日的新闻稿中表示,根据其最新市场分析,在人工智能市场的巨大需求...
OPPO总裁陈明永入选“202... 瑞财经1月13日,由瑞财经推出的“2025年度手机行业六大杰出人物”榜单揭晓,OPPO总裁陈明永入选...
国联民生证券董事长顾伟入选“2... 瑞财经1月15日,由瑞财经推出的“2025年度证券行业十大杰出人物”榜单揭晓,国联民生证券董事长顾伟...
南昌第五医院甲状腺科江辉科普:... 甲亢甲亢,作为一种生活中频发的疾病,已成为常见的病症之一。根据一项流行病学调查的数据显示,我国甲亢的...
A股异动丨年度预亏,昆仑万维午... 昆仑万维(300418.SZ)午间收跌8.6%报56.95元,总市值715亿元。消息上,昆仑万维昨日...
当千问能帮你“一句话出游”时,... 千问(房煜摄) 1月15日,在阿里巴巴西溪园区的会议大厅,当两名淘宝闪购配送员提着40杯霸王茶姬走进...
国家电网“十五五”计划投资4万... 国家电网1月15日宣布,“十五五”期间公司固定资产投资预计达到4万亿元,较“十四五”投资增长40%,...
乘联会:12月车市“减速蓄势”... 在政策调整与市场博弈的双重影响下,2025年12月全国乘用车市场迎来年末收官。尽管受以旧换新补贴退坡...
青岛国恩股份通过港交所聆讯,青... 齐鲁晚报·齐鲁壹点记者 尚青龙 日前,青岛国恩科技股份有限公司通过港交所聆讯,向港股上市迈出关键一步...
共商产权市场发展大计 常修泽建... ■ 中国经济时报记者 刘慧 2026年1月13日,“十五五”产权市场高质量发展研讨会在江苏省常州市举...
银行股年内跌幅居首,结构性降息... 开年以来,A股市场整体表现回暖,但银行板块却未能延续此前涨势,走势明显偏弱。Wind数据显示,截至1...
鸣鸣很忙上市背后:万店连锁告别... ▲这是灵兽第1748篇原创文章 万店之后拼的不是胆量,而是效率优势。 作者/十里 ID/lingsh...
以价代税,中欧电动汽车博弈新起... 中欧电动汽车案“软着陆”,以最低进口价格替代“反补贴”税;具体价格形成方式将成为后续磋商的关键点 文...
4万亿投资创纪录,国家电网布局... 国家电网于1月15日公布,“十五五”时期的固定资产投资预计将达4万亿元,较“十四五”期间投资规模增长...
黄金价格飙升,银行保管箱“一箱... 在黄金价格持续走高的背景下,黄金投资与储备需求加剧,银行保管箱租赁业务随之火爆。 据中国证券报,记者...
原创 年... “突然剧烈头痛,像被重锤击中!”“一侧肢体麻木无力,说话也含糊不清……”这些可能是大脑发出的求救信号...