赞
踩
用了一个rust代码,记录下。
Rust 是一种系统级编程语言,由 Mozilla(火狐那个) 开发,并于 2010
年首次公开发布。它的设计旨在提供高性能、并发性、安全性以及开发人员友好的语法。Rust 的特点包括但不限于以下几个方面:
特点:
Cargo
是 Rust 的包管理和构建系统,提供了项目管理、依赖管理、测试等功能,极大地简化了项目的管理和构建流程。适用领域:
安装 Rust 时,会安装 Rust 编程语言的工具链和相关的工具。包括 Rust 编译器(rustc
)、包管理器 Cargo
、Rust 标准库以及一些辅助工具。具体来说,安装 Rust 会包括以下内容:
rustc
:Rust 的编译器,负责将 Rust 代码编译成可执行程序或者库。cargo
:Rust 的包管理器和构建工具,用于创建、构建、测试和发布 Rust 项目。rustup doc
命令来打开 Rust 的文档,包括标准库的文档和 Rust 编程语言的指南。rustup doc --book
命令来查看官方示例和教程。rustup
是 Rust 的工具链管理器,用于安装、管理和更新 Rust 工具链和版本。它提供了便捷的方式来管理不同版本的 Rust 和工具链。rustfmt
(Rust 代码格式化工具)和 clippy
(Rust 代码 lint 工具)等。这些工具可以帮助你保持代码的风格统一和代码质量。下载安装程序:https://www.rust-lang.org/tools/install
运行安装程序,出现:
输入1,回车即可默认安装,期间会下载资源文件。
安装完后查看版本信息:
rustc --version
cargo --version
Rust没有专门的IDE,你可以使用VS code或者IDEA的插件。
项目结构:
my_project/
├── Cargo.toml # 项目的配置文件,包含了项目的元数据和依赖信息。
└── src/
├── main.rs # 主入口文件
├── lib.rs # 库的入口文件
├── my_module.rs # 自定义模块文件
└── my_module_test.rs # 测试文件
Rust 程序的程序结构包括了模块(Modules
)、函数(Functions
)、变量(Variables
)、控制流(Control Flow
)等部分。下面是 Rust 程序的基本结构和各个部分的详细介绍:
Rust 中的模块用于组织代码,将相关的功能组织在一起。一个 Rust 程序通常由一个主模块(main.rs
)和多个子模块组成。
使用 mod
关键字定义模块,模块可以嵌套。
示例:
// 定义一个模块
mod my_module {
// 在模块中定义函数
pub fn hello() {
println!("Hello from my_module!");
}
}
// 在主函数中使用模块中的函数
fn main() {
my_module::hello();
}
Rust 中的函数使用 fn
关键字定义,函数可以有参数和返回值。
函数的参数和返回值必须指定类型。
示例:
// 定义一个函数
fn add(a: i32, b: i32) -> i32 {
a + b
}
// 调用函数
let result = add(5, 10);
println!("Result: {}", result); // 输出:Result: 15
Rust 中的变量使用 let
关键字声明,变量默认是不可变的(immutable)。
使用 mut
关键字可以声明可变变量。
示例:
// 声明不可变变量
let x = 5;
// x = 10; // 错误!不可变变量不能修改
// 声明可变变量
let mut y = 10;
y = 15; // 可变变量可以修改
Rust 中常见的变量类型:
类型 | 描述 | 大小 |
---|---|---|
i8 | 有符号 8 位整数 | 1 字节 |
i16 | 有符号 16 位整数 | 2 字节 |
i32 | 有符号 32 位整数(默认类型) | 4 字节 |
i64 | 有符号 64 位整数 | 8 字节 |
u8 | 无符号 8 位整数 | 1 字节 |
u16 | 无符号 16 位整数 | 2 字节 |
u32 | 无符号 32 位整数 | 4 字节 |
u64 | 无符号 64 位整数 | 8 字节 |
isize | 有符号整数,与指针大小相同 | 平台相关 |
usize | 无符号整数,与指针大小相同 | 平台相关 |
f32 | 单精度浮点数 | 4 字节 |
f64 | 双精度浮点数(默认类型) | 8 字节 |
bool | 布尔类型,true 或 false | 1 字节 |
char | 字符类型 | 4 字节 |
() | 空类型(Unit 类型,类似于 void) | 0 字节 |
str | 字符串类型(不可变) | 不定长 |
String | 字符串类型(可变,堆分配) | 不定长 |
&str | 字符串切片引用(不可变) | 不定长 |
&String | 字符串引用(不可变) | 不定长 |
Vec<T> | 动态数组类型(可变长度数组) | 不定长 |
Option<T> | 可选值类型,用于处理可能为 None 的值 | 不定长 |
Result<T, E> | 结果类型,用于处理可能出错的操作 | 不定长 |
Tuple | 元组类型,固定长度的不同类型值的组合 | 不定长 |
Array | 数组类型,固定长度的相同类型值的集合 | 固定长度 |
Rust 中的控制流语句包括 if 表达式、循环和匹配模式(match)。
if 表达式:
let number = 7;
if number < 5 {
println!("Number is less than 5");
} else {
println!("Number is greater than or equal to 5");
}
while 循环:
let mut count = 0;
while count < 5 {
println!("Count: {}", count);
count += 1;
}
for 循环:
for number in 1..=5 {
println!("Number: {}", number);
}
match表达式:
let x = 5;
match x {
1 => println!("One"),
2 => println!("Two"),
_ => println!("Other"),
}
Rust 中的宏允许你编写类似函数的代码来生成代码。
Rust 内置了一些常用的宏,比如 println!
和 vec!
等。
你也可以自定义宏。
示例:
macro_rules! greet {
() => {
println!("Hello, World!");
};
}
greet!(); // 调用宏
// 定义一个模块 mod my_module { // 在模块中定义函数 pub fn hello() { println!("Hello from my_module!"); } } // 定义一个函数 fn add(a: i32, b: i32) -> i32 { a + b } // 主函数 fn main() { my_module::hello(); // 调用模块中的函数 let result = add(5, 10); // 调用函数 println!("Result: {}", result); // 输出:Result: 15 let x = 5; // 定义不可变变量 let mut y = 10; // 定义可变变量 y = 15; // 修改可变变量的值 let number = 7; if number < 5 { println!("Number is less than 5"); } else { println!("Number is greater than or equal to 5"); } let mut count = 0; while count < 5 { println!("Count: {}", count); count += 1; } for number in 1..=5 { println!("Number: {}", number); } let x = 5; match x { 1 => println!("One"), 2 => println!("Two"), _ => println!("Other"), } macro_rules! greet { () => { println!("Hello, World!"); }; } greet!(); // 调用宏 }
以使用 Cargo 这个 Rust 的包管理器和构建工具来编译程序
打开终端(命令行),进入到项目目录。
运行:
cargo build
这会在项目目录下生成一个 target/ 目录,其中包含编译生成的可执行文件。
编译完成后,在终端中运行生成的可执行文件:
./target/debug/my_project
如果是库项目,需要将库文件引入其他 Rust 项目中,或者进行单元测试等。
如果需要进行发布版的编译(带有优化):
cargo build --release
这会在 target/ 目录下生成一个 release/ 目录,其中包含优化后的可执行文件。这个可执行文件在运行时可能会更快,但编译时间会更长。
附加命令
cargo run
: 编译并运行项目。如果你不需要单独编译,可以直接使用这个命令来编译和运行项目:
cargo check
: 检查代码是否可以编译,但不生成可执行文件。这个命令可以用于快速检查代码的语法和类型错误:
注意事项
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。