#fallback

macro fallback-derive

A helper library to implement fallback mechaism

2 releases

0.1.1 Mar 21, 2023
0.1.0 Sep 10, 2022

#5 in #fallback

Download history 70/week @ 2023-01-19 70/week @ 2023-01-26 133/week @ 2023-02-02 117/week @ 2023-02-09 100/week @ 2023-02-16 102/week @ 2023-02-23 59/week @ 2023-03-02 64/week @ 2023-03-09 345/week @ 2023-03-16 215/week @ 2023-03-23 151/week @ 2023-03-30 52/week @ 2023-04-06 16/week @ 2023-04-13 39/week @ 2023-04-20 48/week @ 2023-04-27 108/week @ 2023-05-04

220 downloads per month
Used in 5 crates (via fallback)

MIT license

7KB
105 lines

fallback

This is a helper library to implement fallback mechaism. It contains two Option, and if the "desired" one is None, the "base" one will be chosen.

A trait called FallbackSpec is used to implement field fallback for a struct.

use fallback::*;

#[derive(FallbackSpec)]
struct Foo {
    data1: i32,
    data2: String,
}

let data = Foo {
    data1: 123,
    data2: "Hello".to_string(),
};

let data = Fallback::new(None, Some(data));
let data = data.spec();

assert_eq!(data.data1.unzip(), (None, Some(123)));
assert_eq!(data.data2.unzip(), (None, Some("Hello".to_string())));

Dependencies

~0.5–1MB
~22K SLoC