4 releases

0.1.3 Jan 13, 2024
0.1.2 Mar 21, 2023
0.1.1 Sep 23, 2022
0.1.0 Sep 10, 2022

#420 in Data structures

Download history 15/week @ 2024-01-19 10/week @ 2024-01-26 28/week @ 2024-02-02 29/week @ 2024-02-09 40/week @ 2024-02-16 63/week @ 2024-02-23 29/week @ 2024-03-01 34/week @ 2024-03-08 38/week @ 2024-03-15 48/week @ 2024-03-22 62/week @ 2024-03-29 43/week @ 2024-04-05 26/week @ 2024-04-12 12/week @ 2024-04-19 11/week @ 2024-04-26 2/week @ 2024-05-03

53 downloads per month
Used in 4 crates (2 directly)

MIT license

10KB
141 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())));

lib.rs:

A fallback type.

Fallback type provides functionality to fallback if a value or a part of value doesn't exist.

Dependencies

~330–790KB
~19K SLoC