面试题答案
一键面试结构体方法的文档注释
在Rust中,结构体方法的文档注释使用 ///
开头,写在方法定义之前。注释内容一般包括功能描述、参数说明和返回值说明。当涉及泛型类型参数时,需要在注释中说明泛型参数的约束和用途。
/// 一个简单的泛型结构体
///
/// 这个结构体用于存储一个泛型类型的值。
///
/// # 类型参数
///
/// - `T`: 可以是任何实现了 `Debug` 特征的类型,因为我们在 `print_value` 方法中使用了 `Debug` 输出。
struct Container<T> {
value: T,
}
impl<T: std::fmt::Debug> Container<T> {
/// 创建一个新的 `Container` 实例
///
/// # 参数
///
/// - `value`: 要存储在 `Container` 中的值,其类型为 `T`。
///
/// # 返回值
///
/// 返回一个新的 `Container` 实例,其中包含给定的值。
fn new(value: T) -> Self {
Container { value }
}
/// 打印存储在 `Container` 中的值
///
/// 这个方法会将存储的值打印到标准输出,使用 `Debug` 格式化。
fn print_value(&self) {
println!("Value: {:?}", self.value);
}
}
枚举变体的文档注释
枚举变体的文档注释同样使用 ///
开头,写在变体定义之前。注释内容包括变体的功能描述,当变体包含数据时,需要说明数据的含义。
/// 一个表示数学运算的枚举
///
/// 这个枚举定义了几种基本的数学运算。
enum MathOperation {
/// 加法运算
///
/// 这个变体不包含数据,用于表示加法操作。
Add,
/// 减法运算
///
/// 这个变体不包含数据,用于表示减法操作。
Subtract,
/// 乘法运算
///
/// 这个变体不包含数据,用于表示乘法操作。
Multiply,
/// 除法运算
///
/// 这个变体不包含数据,用于表示除法操作。
Divide,
}
impl MathOperation {
/// 执行数学运算
///
/// # 参数
///
/// - `a`: 第一个操作数。
/// - `b`: 第二个操作数。
///
/// # 返回值
///
/// 根据枚举变体返回相应运算的结果,如果是除法且 `b` 为0,则返回 `None`。
fn operate(&self, a: i32, b: i32) -> Option<i32> {
match self {
MathOperation::Add => Some(a + b),
MathOperation::Subtract => Some(a - b),
MathOperation::Multiply => Some(a * b),
MathOperation::Divide => if b != 0 { Some(a / b) } else { None },
}
}
}
通过上述文档注释,其他开发者可以清晰地了解结构体方法和枚举变体的功能、参数及返回值,即使涉及泛型类型参数也能正确使用。