[][src]Crate projection

projection provides you easy access struct fields of a Option.

Examples

To use projection, you first need to annotate your type with the projection attribute

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

Then, you can use project() to access fields of AType from a Option<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));

Re-exports

pub use crate::prelude::*;

Modules

prelude

Attribute Macros

projection