#option-t #attributes #u32

projection

将类型投影到 Option

2 个版本

0.1.1 2020年9月20日
0.1.0 2020年9月20日

#10 in #option-t

BSL-1.0 许可协议

4KB

投影

文档


lib.rs:

projection 为您提供了访问 Option 的结构体字段的便捷方式。

示例

要使用 projection,您首先需要使用 projection 属性注释您的类型

use ::projection::projection;
#[projection]
struct AType {
    a: u32,
    b: u32
}

然后,您可以使用 project()Option<AType> 访问 AType 的字段

use ::projection::prelude::*;

let var: Option<AType> = None;
let var = var.project();
assert_eq!(var.a, None);

let var = Some(AType { a: 1, b: 1 });
let var = var.project();
assert_eq!(var.a, Some(1));

// You can choose to borrow the values
let mut var = Some(AType { a: 1, b: 1 });
let var = var.as_mut().project();
assert_eq!(var.a, Some(&mut 1));

let var = Some(AType { a: 1, b: 1 });
let var = var.as_ref().project();
assert_eq!(var.a, Some(&1));

依赖

~2MB
~42K SLoC