审查生成的目录 API

来自 模块与 crate
Rust 1.98 高级 6分钟 找出 4处问题

审查这个生成的商品目录库 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)
}

生成代码仅作示例,不代表任何特定模型

在试验场中打开
报告错误