目录Rust简介变量绑定与解构基本类型数值类型字符、布尔、单元类型语句与表达式函数复合类型字符串切片元组结构体枚举数组Rust简介核心特点内存安全:Rust通过其独特的所有权模型来确保内存安全,避免了空指针异常、数据竞争等问题。它不需要垃圾回
内存安全:Rust 通过其独特的所有权模型来确保内存安全,避免了空指针异常、数据竞争等问题。它不需要垃圾回收机制,而是通过编译时检查的所有权和生命周期系统来防止内存泄漏和其他常见的内存错误。
并发性:Rust 的所有权模型也使得它能够在编译时检测数据竞争,从而提供了安全的并发编程方式。
高性能:作为一门编译型语言,Rust 产生的机器码可以直接在计算机上运行,没有虚拟机的开销,因此它非常适合用来编写对性能要求极高的应用。
多范式支持:Rust 支持函数式编程、面向对象编程以及过程化编程等多种编程风格。
Rust 语言是由 Mozilla Research 的 Graydon Hoare 在 2006 年开始开发的。最初的目的是为了改进 Web 浏览器引擎的性能和安全性。自 2010 年开源以来,Rust 社区不断壮大,吸引了来自全球各地的贡献者。2015 年,Rust 发布了第一个稳定版本 1.0,并且此后每年都会发布新的稳定版本,持续引入新特性和改进。
Rust 可以应用于多种场景,包括但不限于:
Rust 的工具链包括:
示例代码:
fn main() {
// 不可变绑定
let x = 5;
println!("x is: {}", x);
// 可变绑定
let mut y = 6;
y = 7; // 修改 y 的值
println!("y is now: {}", y);
}
变量的作用域是从定义它的位置开始,直到其所在的大括号结束。
示例代码:
fn main() {
let x = 5;
if x > 0 {
let y = 10;
println!("y is: {}", y); // 输出 10
}
// println!("y is: {}", y); // 编译错误:y 在此处不可见
}
Rust中的模式匹配允许我们以一种更安全的方式处理数据结构。例如,可以使用元组或枚举来解构数据。
fn main() {
let (a, b) = (10, 20);
println!("a is {} and b is {}", a, b);
let color = Color::Red;
match color {
Color::Red => println!("红色"),
Color::Green => println!("绿色"),
Color::Blue => println!("蓝色"),
}
}
#[derive(Debug)]
enum Color {
Red,
Green,
Blue,
}
示例代码:
fn main() {
let integer: i32 = 99;
let floating_point: f64 = 2.71828;
let character: char = 'A';
let boolean: bool = true;
let unit: () = ();
println!("integer is: {}", integer);
println!("floating_point is: {}", floating_point);
println!("character is: {}", character);
println!("boolean is: {}", boolean);
println!("unit is: {:?}", unit);
}
在Rust中,语句和表达式有着明确的区别:
示例代码:
fn main() {
let x = 5; // 语句
let y = { // 表达式
let x = 3;
x + 1
};
println!("The value of y is: {}", y);
}
Rust 中的字符串类型主要有两种:String 和 str。
String String 类型是一个可变的字符串类型,可以动态增长。
示例代码:
fn main() {
let mut s = String::from("hello");
// 修改字符串
s.push_str(", world!");
println!("{}", s); // 输出 "hello, world!"
// 字符串拼接
let s1 = String::from("hello");
let s2 = String::from("world");
let s3 = format!("{} {}", s1, s2);
println!("{}", s3); // 输出 "hello world"
}
str str 类型是一个不可变的字符串切片,通常用于表示字符串的一部分。
示例代码:
fn main() {
let s = "hello";
println!("{}", s); // 输出 "hello"
// 访问子字符串
let hello = &s[0..5];
println!("{}", hello); // 输出 "hello"
}
切片是一种视图类型,可以表示数组或字符串的一部分。
字符串切片
fn main() {
let s = String::from("hello world");
// 创建一个字符串切片
let slice = &s[0..5]; // 包含索引 0 到 4 的字符
println!("Slice: {}", slice); // 输出 "hello"
}
// 另一种创建字符串切片的方法
fn main() {
let s = String::from("hello world"... 如果觉得我的文章对您有用,请随意打赏。你的支持将鼓励我继续创作!