summaryrefslogtreecommitdiffstats
path: root/src/backend/mod.rs
blob: 3f72d6675b898fff7061d2e0d847df5ba916f8f0 (plain)
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
pub mod dialoguer;

use crate::BuildableValue;
use crate::CollectionBuilder;
use crate::ValueBuilder;

/// A backend can be used to get builders for specific types
pub trait Backend {
    type Error: Sized;

    fn bool_builder(&self)   -> Box<dyn ValueBuilder<Output = bool, Error = Self::Error>>;
    fn u8_builder(&self)     -> Box<dyn ValueBuilder<Output = u8, Error = Self::Error>>;
    fn u16_builder(&self)    -> Box<dyn ValueBuilder<Output = u16, Error = Self::Error>>;
    fn u32_builder(&self)    -> Box<dyn ValueBuilder<Output = u32, Error = Self::Error>>;
    fn u64_builder(&self)    -> Box<dyn ValueBuilder<Output = u64, Error = Self::Error>>;
    fn u128_builder(&self)   -> Box<dyn ValueBuilder<Output = u128, Error = Self::Error>>;
    fn i8_builder(&self)     -> Box<dyn ValueBuilder<Output = i8, Error = Self::Error>>;
    fn i16_builder(&self)    -> Box<dyn ValueBuilder<Output = i16, Error = Self::Error>>;
    fn i32_builder(&self)    -> Box<dyn ValueBuilder<Output = i32, Error = Self::Error>>;
    fn i64_builder(&self)    -> Box<dyn ValueBuilder<Output = i64, Error = Self::Error>>;
    fn i128_builder(&self)   -> Box<dyn ValueBuilder<Output = i128, Error = Self::Error>>;
    fn usize_builder(&self)  -> Box<dyn ValueBuilder<Output = usize, Error = Self::Error>>;
    fn isize_builder(&self)  -> Box<dyn ValueBuilder<Output = isize, Error = Self::Error>>;
    fn f32_builder(&self)    -> Box<dyn ValueBuilder<Output = f32, Error = Self::Error>>;
    fn f64_builder(&self)    -> Box<dyn ValueBuilder<Output = f64, Error = Self::Error>>;
    fn char_builder(&self)   -> Box<dyn ValueBuilder<Output = char, Error = Self::Error>>;
    fn string_builder(&self) -> Box<dyn ValueBuilder<Output = String, Error = Self::Error>>;

    fn option_builder<T: 'static + BuildableValue>(&self) -> Box<dyn CollectionBuilder<Output = Option<T>, Error = Self::Error>>;

    fn vec_builder<T>(&self) -> Box<dyn CollectionBuilder<Output = Vec<T>, Error = Self::Error>>
        where T: 'static + BuildableValue;
}