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

相关内容

热门资讯

蜻蜓订购APP贵金属订购非法期...   蜻蜓订购APP以"投资平台"名义对外宣传,主打贵金属期货(订购)交易。该平台一方面强调自身"正规...
悟空订购APP非法期货交易欺骗...   近期,有投资者反映,“悟空订购APP”等平台以白银、贵金属订购为名,宣传所谓“高收益”“低门槛”...
小赢淘金APP期货投资骗局,平...   “小赢淘金”之流,最擅长的就是用“注册送现金”、“充值返券”的糖衣炮弹来引流。别天真地以为那是福...
八方淘金APP非法期货交易欺骗...   警惕!八方生财、每日淘金、小赢淘金、悟空订购、蜻蜓订购、斗金订购等APP均涉嫌非法期货交易!  ...
智易购APP贵金属订购交易骗局...   很多人看到“3元起投”“充值送福利”“操作简单”“随时提现”这类宣传,很容易把智易购APP当成普...
喜玛银庄APP商品订购投资骗局...   喜玛银庄APP白银、铂金“现货订购”骗局警示:无资质平台涉嫌非法期货交易,投资者爆仓后如何维权?...
吉鑫乐享APP炒贵金属订购交易...   近期,多名投资者反映在“吉鑫乐享APP”进行贵金属投资时遭遇严重亏损,甚至血本无归。看似正规的“...
易掘金APP虚假期货投资骗局,...   “易掘金”的APP它打着“高收益、灵活投资”的旗号,宣称通过“商品订购”就能轻松赚钱,吸引了不少...
在大吉订购APP订购交易亏损被...   近期,不少投资者反映在“大吉订购App”上投资白银、铂金等商品遭遇严重亏损。该平台宣称提供现货订...
铂银壹号APP商品订购交易亏损...   许多中小投资者误以为网上的“商品现货订购”是合规合法的理财渠道,殊不知这背后隐藏着巨大的合规风险...
兴鑫淘金APP贵金属订购交易亏...   白银、贵金属或其他商品类投资,除国家批准的正规期货交易场所及持牌期货公司外,市面上大量第三方交易...
铂银掘金APP无资质的违规平台...   铂银掘金等平台的投资者,往往是被“注册送现金”“充值返现券”“首单免亏”等广告话术吸引,进而下载...
八方淘金APP订购交易不合规,...   “八方淘金APP”“铂银掘金APP”“铂银壹号APP”等软件被指以“现货订购”为名,实际采用高杠...
在指尖订购APP订购商品亏损被...   指尖订购APP这类平台,表面是“订购交易”,实则是披着电商外衣的非法期货陷阱。绝大多数投资者被蒙...
在犀贝易购APP做商品订购交易...   市面上打着“现货投资”“贵金属交易”旗号的APP并不少,但真正合规、受监管的平台并不多。犀贝易购...
易达淘金APP虚假商品订购交易...   易达淘金APP存在严重的虚假宣传与违规交易行为。该平台打着“商品订购”的旗号,实则通过不合规的交...
大浪淘金APP白银订购亏损被骗...   大浪淘金APP最隐蔽的套路,在于其完全封闭的内盘交易系统。表面上,它宣称与国际贵金属市场接轨;实...
一品好购APP上订购白银出现亏...   一品好购APP原名“一品订购”,运营方为上海宝智未来信息技术有限公司。近期不少投资者反映在该平台...
九州订购APP贵金属订购投资骗...   九州订购APP正通过抖.音、快手、今日头条等平台大量投放投资广告,用“5元起投”“充值返现”“0...
坚锅淘金APP交易软件并不正规...   当前,市面上大量所谓的“现货商城订购”交易软件,早已偏离了正常的实物商品买卖,演变为高杠杆、高手...