设计思路
- 定义结构体:在Rust中使用
struct
关键字定义包含多个整数类型字段的结构体。
- 操作实现:实现一个方法,用于对结构体中的所有整数字段求和。
- 溢出检测:在求和过程中,使用
checked_add
方法来检测整数溢出,该方法在发生溢出时返回None
,否则返回Some(sum)
。
- 错误处理:使用
Result
类型来返回操作结果。如果没有发生溢出,返回Ok(sum)
;如果发生溢出,返回Err
并携带相应的错误信息。
代码实现
// 定义一个包含多个整数类型字段的结构体
struct MyNumbers {
num1: i32,
num2: i32,
num3: i32,
}
// 为MyNumbers结构体实现方法
impl MyNumbers {
// 定义一个方法对所有整数字段求和,并处理可能的溢出
fn sum_fields(&self) -> Result<i32, &'static str> {
let sum = self.num1.checked_add(self.num2)
.and_then(|partial_sum| partial_sum.checked_add(self.num3))
.ok_or("Integer overflow occurred during summation");
sum
}
}
fn main() {
let numbers = MyNumbers { num1: 10, num2: 20, num3: 30 };
match numbers.sum_fields() {
Ok(sum) => println!("Sum: {}", sum),
Err(e) => println!("Error: {}", e),
}
let overflow_numbers = MyNumbers { num1: i32::MAX, num2: 1, num3: 0 };
match overflow_numbers.sum_fields() {
Ok(sum) => println!("Sum: {}", sum),
Err(e) => println!("Error: {}", e),
}
}