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}