2 个版本
0.1.1 | 2020年9月20日 |
---|---|
0.1.0 | 2020年9月20日 |
#10 in #option-t
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