面试题答案
一键面试// 定义Point结构体
struct Point {
x: i32,
y: f64,
}
fn main() {
// 声明并初始化结构体实例
let p = Point {
x: 10,
y: 3.14,
};
println!("Point x: {}, y: {}", p.x, p.y);
}
Rust对于结构体成员变量的默认初始化策略
在Rust中,结构体成员变量不会有默认值。必须在创建结构体实例时显式地初始化每个成员变量。这有助于在编译时捕获未初始化变量的错误,提高程序的安全性和稳定性。
Rust的内存管理机制
- 栈和堆:对于像
i32
这样的基本类型,它们的值直接存储在栈上。而对于像String
或自定义复杂类型等较大的数据结构,其数据存储在堆上,栈上只存储指向堆数据的指针。在Point
结构体中,x
(i32
类型)和y
(f64
类型)都是基本类型,它们的值会直接存储在栈上,因为它们的大小在编译时是已知的。 - 所有权系统:Rust通过所有权系统管理内存。每个值都有一个所有者,当所有者离开其作用域时,Rust会自动释放该值所占用的内存。在上述例子中,当
p
离开main
函数的作用域时,Rust会自动清理p
所占用的栈空间,由于x
和y
都是基本类型,它们不需要额外的堆内存分配,所以清理过程简单高效。