Crates.io | unpack_option |
lib.rs | unpack_option |
version | 0.1.1 |
created_at | 2025-08-22 12:41:09.262164+00 |
updated_at | 2025-08-23 16:55:36.380735+00 |
description | A Rust library that generates camelCase fields structs from struct with snake_case fields |
homepage | https://github.com/JiajieZeee/unpack_option |
repository | https://github.com/JiajieZeee/unpack_option |
max_upload_size | |
id | 1806263 |
size | 8,103 |
for English ,see readmeEn
一个轻量级Rust库,为Option类型提供扩展方法,便捷地将Option
OptionExt
unpack()
和 unpack_for()
OptionError
,支持通用错误和参数名指定错误在Cargo.toml
中添加依赖:
[dependencies]
unpack_option = "0.1.0"
use unpack_option::OptionExt;
fn main() -> Result<(), Box<dyn std::error::Error>> {
let some_value: Option<i32> = Some(42);
let none_value: Option<i32> = None;
// 成功解包Some值
let value = some_value.unpack()?;
println!("解包成功: {}", value);
// 解包None值将返回错误
match none_value.unpack() {
Ok(_) => println!("这行不会执行"),
Err(e) => println!("解包失败: {}", e), // 输出: "解包失败: param can not be null"
}
Ok(())
}
use unpack_option::OptionExt;
fn process_user(id: Option<u64>) -> Result<(), Box<dyn std::error::Error>> {
// 为错误消息指定参数名
let user_id = id.unpack_for("user_id")?;
println!("处理用户ID: {}", user_id);
Ok(())
}
fn main() {
if let Err(e) = process_user(None) {
println!("错误: {}", e); // 输出: "错误: user_id can not be null"
}
}
OptionError
枚举包含两个变体:
CanNotBeNull
: 通用错误,表示Option值为NoneCanNotBeNullFor(&'static str)
: 包含参数名的错误,提供更具体的错误信息本项目采用MIT许可证 - 详情参见LICENSE文件