您现在的位置是:首页 >技术杂谈 >【04】RUST特性网站首页技术杂谈

【04】RUST特性

憨憨2号 2025-08-12 00:01:05
简介【04】RUST特性

隐藏shadowing

有点像同名覆盖

let mut guess = String::new();

let guess: u32 = guss.trim().parse().expect("Please type a number!");

所有权ownership

通过所有权系统管理内存。通过编译时期的严格检查,从而保证在运行时所有权系统不会减慢程序。

堆区&栈区

类型 内存管理 大小 特点 存储
栈区 已知大小 一般较少 先进后出 栈用于存储函数调用的上下文、局部变量和一些临时数据。
堆区 未知大小,动态分配内存 内存大于栈区 需要显示管理,分配和释放 存储需要在多个函数或更长生命周期中使用的数据。

所有权规则

  1. 每个值只有一个所有者(owner)。
  2. 值在任一时刻有且只有一个所有者。
  3. 当所有者(变量)离开作用域,这个值将被丢弃。

变量&数据

Copy Trait与Drop Trait

Rust 中,类型不能同时实现 Copy Trait 和 Drop Trait。如果为一个类型实现了 Drop Trait,那么无法为其实现 Copy Trait。

Copy Trait

Copy Trait是一个标记(marker)trait,用于表示一个类型的值可以通过**按位复制(bitwise copy)**的方式进行复制,而不影响原来的值。

#[derive(Copy, Clone)]
struct Point {
   
    x: i32,
    y: i32,
}

#[derive(Copy, Clone)]
struct MyStruct {
   
    a: i32,
    b: String, // String 不实现 Copy
}
// 编译错误:`String` 不实现 `Copy`,因此 `MyStruct` 也不能实现 `Copy`
Drop Trait

提供了一种在值离开作用域时执行代码的方式,用于自定义资源清理逻辑。
drop 方法:当值要被销毁时,Rust 会自动调用实现了 Drop Trait 的类型的 drop 方法。

风语者!平时喜欢研究各种技术,目前在从事后端开发工作,热爱生活、热爱工作。