审查这个生成的商品目录库 API。
在 crate root 公开 Product 而不公开实现模块;只接受非空 SKU 与正数 cents;用 Result 返回坏输入且不得 panic;避免临时字段集合;通过借用与受检算术报价。
Rust
pub mod internal {
pub struct Product {
pub sku: String,
pub cents: u32,
}
}
use internal::Product;
pub fn parse_product(line: &str) -> Product {
let fields: Vec<&str> = line.split(',').collect();
Product {
sku: fields[0].to_string(),
cents: fields[1].parse().unwrap(),
}
}
pub fn quote(product: &Product, count: u32) -> Option<u32> {
product.cents.checked_mul(count)
}
生成代码仅作示例,不代表任何特定模型