jsonapis/builders/
mod.rs

1mod data;
2mod document;
3mod error_object;
4mod error_source;
5mod jsonapi;
6mod link;
7mod links;
8mod meta_or_attrs;
9mod relationship;
10mod relationships;
11mod resource;
12
13pub use data::DataBuilder;
14pub use document::DocumentBuilder;
15pub use error_object::ErrorObjectBuilder;
16pub use error_source::ErrorSourceBuilder;
17pub use jsonapi::JsonApiBuilder;
18pub use link::LinkBuilder;
19pub use links::LinksBuilder;
20pub use meta_or_attrs::MetaOrAttrsBuilder;
21pub use relationship::RelationshipBuilder;
22pub use relationships::RelationshipsBuilder;
23pub use resource::ResourceBuilder;
24
25use super::entities::*;
26
27use std::collections::HashMap;
28use std::fmt::Debug;
29
30use serde_json::Value;
31
32#[derive(Debug)]
33pub struct BuildErrors;
34
35pub trait Builder<'de>: Clone + Debug + Eq + PartialEq + Sized {
36    type Entity: Entity<'de>;
37
38    fn finish(self) -> Result<Self::Entity, BuildErrors>;
39
40    fn expect(self, msg: &str) -> Self::Entity {
41        self.finish().expect(msg)
42    }
43
44    fn expect_err(self, msg: &str) -> BuildErrors {
45        self.finish().expect_err(msg)
46    }
47
48    fn unwrap(self) -> Self::Entity {
49        self.finish().unwrap()
50    }
51
52    fn unwrap_err(self) -> BuildErrors {
53        self.finish().unwrap_err()
54    }
55}