审查生成的目录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)
}

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

在试验场中打开
报告错误