relax
Traits for TypeScript-like partial (“relaxed”) types
Usage
Generate “relaxed” types
# extern crate r#relax;
use Relax;
pub
yields the following partial (“relaxed”) struct:
use Relax;
pub
You can also apply macros to generated structs:
use Relax;
use ;
pub
yields
pub
Create empty “relaxed” instances
Relaxed structs derive [Relaxed] trait, which has new associated function.
use ;
pub
let empty = PartialData ;
assert_eq!;
Combine multiple “relaxed” instances
[Relaxed] trait also has merge function. The behavior is similar to [Option::or], except that this function is applied for each struct field.
use ;
pub
let partial_data_1 = PartialData ;
let partial_data_2 = PartialData ;
let merged = partial_data_1.merge;
let expected = PartialData ;
assert_eq!;
Create an original struct instance from a relaxed instance
If all the required fields of the original struct are set in a relaxed struct instance, you can use try_into() to convert it to the original struct.
use ;
let partial_data_1: PartialData = read_data;
let partial_data_2: PartialData = read_data;
let partial_data_3: PartialData = read_data;
let data: Data = partial_data_1
.merge
.merge
.try_into?;