File: builder_name.rs

package info (click to toggle)
rust-derive-builder 0.20.1-2
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid, trixie
  • size: 500 kB
  • sloc: makefile: 2
file content (40 lines) | stat: -rw-r--r-- 818 bytes parent folder | download | duplicates (2)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
#[macro_use]
extern crate pretty_assertions;
#[macro_use]
extern crate derive_builder;

#[derive(Debug, PartialEq, Default, Builder, Clone)]
#[builder(name = "MyBuilder")]
struct Lorem {
    ipsum: &'static str,
    pub dolor: Option<&'static str>,
    pub sit: i32,
    amet: bool,
}

#[test]
fn error_if_uninitialized() {
    let error = MyBuilder::default().build().unwrap_err();
    assert_eq!(&error.to_string(), "`ipsum` must be initialized");
}

#[test]
fn builder_test() {
    let x: Lorem = MyBuilder::default()
        .ipsum("lorem")
        .dolor(Some("dolor"))
        .sit(42)
        .amet(true)
        .build()
        .unwrap();

    assert_eq!(
        x,
        Lorem {
            ipsum: "lorem",
            dolor: Some("dolor"),
            sit: 42,
            amet: true,
        }
    );
}