Trait kserd::ToKserd [−][src]
Convert something into a Kserd
.
This differs to encoding in that the object is consumed. This trait allows for less copying as data can be moved, in the case of strings or byte arrays.
Implementing
The crate kserd_derive
can be used to annotate objects with #[derive(ToKserd)]
. The crate
works much in the same way as serde_derive
.
If you want to manually implement ToKserd
an example is given below.
use kserd::*; struct MyStruct<'a> { e: MyEnum, s: &'a str, v: Vec<(isize, isize)>, } enum MyEnum { Variant1, Variant2(usize) } // let's implement MyEnum first // it has no references so can be valid for the static lifetime impl ToKserd<'static> for MyEnum { fn into_kserd(self) -> Result<Kserd<'static>, ToKserdErr> { let r = match self { MyEnum::Variant1 => Kserd::with_id("Variant1", Value::Unit)?, // A variant with items is a named Tuple MyEnum::Variant2(i) => Kserd::with_id("Variant2", Value::Tuple(vec![ i.into_kserd()? ]))?, }; Ok(r) } } // now implement MyStruct // it has a reference so make it last for that long impl<'a> ToKserd<'a> for MyStruct<'a> { fn into_kserd(self) -> Result<Kserd<'a>, ToKserdErr> { Ok(Kserd::with_id("MyStruct", Value::new_cntr(vec![ ("e", self.e.into_kserd()?), ("s", self.s.into_kserd()?), ("v", self.v.into_kserd()?), ]).unwrap())?) // notice the ? to propogate the error } } // lets test it let mys = MyStruct { e: MyEnum::Variant2(101), s: "Hello, world!", v: vec![ (0, 1), (2, 3), (4, 5) ] }; let kserd = mys.into_kserd().unwrap(); let s = kserd.as_str(); assert_eq!( &s, r#"MyStruct ( e = Variant2 (101) s = "Hello, world!" v = [(0, 1), (2, 3), (4, 5)] )"# );
Required methods
fn into_kserd(self) -> Result<Kserd<'a>, ToKserdErr>
[src]
Consume the object and convert it into a Kserd
data object.
Implementations on Foreign Types
impl ToKserd<'static> for usize
[src]
fn into_kserd(self) -> Result<Kserd<'static>, ToKserdErr>
[src]
impl ToKserd<'static> for u8
[src]
fn into_kserd(self) -> Result<Kserd<'static>, ToKserdErr>
[src]
impl ToKserd<'static> for u16
[src]
fn into_kserd(self) -> Result<Kserd<'static>, ToKserdErr>
[src]
impl ToKserd<'static> for u32
[src]
fn into_kserd(self) -> Result<Kserd<'static>, ToKserdErr>
[src]
impl ToKserd<'static> for u64
[src]
fn into_kserd(self) -> Result<Kserd<'static>, ToKserdErr>
[src]
impl ToKserd<'static> for u128
[src]
fn into_kserd(self) -> Result<Kserd<'static>, ToKserdErr>
[src]
impl ToKserd<'static> for isize
[src]
fn into_kserd(self) -> Result<Kserd<'static>, ToKserdErr>
[src]
impl ToKserd<'static> for i8
[src]
fn into_kserd(self) -> Result<Kserd<'static>, ToKserdErr>
[src]
impl ToKserd<'static> for i16
[src]
fn into_kserd(self) -> Result<Kserd<'static>, ToKserdErr>
[src]
impl ToKserd<'static> for i32
[src]
fn into_kserd(self) -> Result<Kserd<'static>, ToKserdErr>
[src]
impl ToKserd<'static> for i64
[src]
fn into_kserd(self) -> Result<Kserd<'static>, ToKserdErr>
[src]
impl ToKserd<'static> for i128
[src]
fn into_kserd(self) -> Result<Kserd<'static>, ToKserdErr>
[src]
impl ToKserd<'static> for f32
[src]
fn into_kserd(self) -> Result<Kserd<'static>, ToKserdErr>
[src]
impl ToKserd<'static> for f64
[src]
fn into_kserd(self) -> Result<Kserd<'static>, ToKserdErr>
[src]
impl ToKserd<'static> for ()
[src]
fn into_kserd(self) -> Result<Kserd<'static>, ToKserdErr>
[src]
impl ToKserd<'static> for bool
[src]
fn into_kserd(self) -> Result<Kserd<'static>, ToKserdErr>
[src]
impl ToKserd<'static> for char
[src]
fn into_kserd(self) -> Result<Kserd<'static>, ToKserdErr>
[src]
impl ToKserd<'static> for String
[src]
fn into_kserd(self) -> Result<Kserd<'static>, ToKserdErr>
[src]
impl<'a> ToKserd<'a> for &'a str
[src]
fn into_kserd(self) -> Result<Kserd<'a>, ToKserdErr>
[src]
impl<'kserd, 'a: 'kserd, A> ToKserd<'kserd> for (A,) where
A: ToKserd<'a>,
[src]
A: ToKserd<'a>,
fn into_kserd(self) -> Result<Kserd<'kserd>, ToKserdErr>
[src]
impl<'kserd, 'a: 'kserd, 'b: 'kserd, A, B> ToKserd<'kserd> for (A, B) where
A: ToKserd<'a>,
B: ToKserd<'b>,
[src]
A: ToKserd<'a>,
B: ToKserd<'b>,
fn into_kserd(self) -> Result<Kserd<'kserd>, ToKserdErr>
[src]
impl<'kserd, 'a: 'kserd, 'b: 'kserd, 'c: 'kserd, A, B, C> ToKserd<'kserd> for (A, B, C) where
A: ToKserd<'a>,
B: ToKserd<'b>,
C: ToKserd<'c>,
[src]
A: ToKserd<'a>,
B: ToKserd<'b>,
C: ToKserd<'c>,
fn into_kserd(self) -> Result<Kserd<'kserd>, ToKserdErr>
[src]
impl<'kserd, 'a: 'kserd, 'b: 'kserd, 'c: 'kserd, 'd: 'kserd, A, B, C, D> ToKserd<'kserd> for (A, B, C, D) where
A: ToKserd<'a>,
B: ToKserd<'b>,
C: ToKserd<'c>,
D: ToKserd<'d>,
[src]
A: ToKserd<'a>,
B: ToKserd<'b>,
C: ToKserd<'c>,
D: ToKserd<'d>,
fn into_kserd(self) -> Result<Kserd<'kserd>, ToKserdErr>
[src]
impl<'kserd, 'a: 'kserd, 'b: 'kserd, 'c: 'kserd, 'd: 'kserd, 'e: 'kserd, A, B, C, D, E> ToKserd<'kserd> for (A, B, C, D, E) where
A: ToKserd<'a>,
B: ToKserd<'b>,
C: ToKserd<'c>,
D: ToKserd<'d>,
E: ToKserd<'e>,
[src]
A: ToKserd<'a>,
B: ToKserd<'b>,
C: ToKserd<'c>,
D: ToKserd<'d>,
E: ToKserd<'e>,
fn into_kserd(self) -> Result<Kserd<'kserd>, ToKserdErr>
[src]
impl<'kserd, 'a: 'kserd, 'b: 'kserd, 'c: 'kserd, 'd: 'kserd, 'e: 'kserd, 'f: 'kserd, A, B, C, D, E, F> ToKserd<'kserd> for (A, B, C, D, E, F) where
A: ToKserd<'a>,
B: ToKserd<'b>,
C: ToKserd<'c>,
D: ToKserd<'d>,
E: ToKserd<'e>,
F: ToKserd<'f>,
[src]
A: ToKserd<'a>,
B: ToKserd<'b>,
C: ToKserd<'c>,
D: ToKserd<'d>,
E: ToKserd<'e>,
F: ToKserd<'f>,
fn into_kserd(self) -> Result<Kserd<'kserd>, ToKserdErr>
[src]
impl<'kserd, 'a: 'kserd, 'b: 'kserd, 'c: 'kserd, 'd: 'kserd, 'e: 'kserd, 'f: 'kserd, 'g: 'kserd, A, B, C, D, E, F, G> ToKserd<'kserd> for (A, B, C, D, E, F, G) where
A: ToKserd<'a>,
B: ToKserd<'b>,
C: ToKserd<'c>,
D: ToKserd<'d>,
E: ToKserd<'e>,
F: ToKserd<'f>,
G: ToKserd<'g>,
[src]
A: ToKserd<'a>,
B: ToKserd<'b>,
C: ToKserd<'c>,
D: ToKserd<'d>,
E: ToKserd<'e>,
F: ToKserd<'f>,
G: ToKserd<'g>,
fn into_kserd(self) -> Result<Kserd<'kserd>, ToKserdErr>
[src]
impl<'kserd, 'a: 'kserd, 'b: 'kserd, 'c: 'kserd, 'd: 'kserd, 'e: 'kserd, 'f: 'kserd, 'g: 'kserd, 'h: 'kserd, A, B, C, D, E, F, G, H> ToKserd<'kserd> for (A, B, C, D, E, F, G, H) where
A: ToKserd<'a>,
B: ToKserd<'b>,
C: ToKserd<'c>,
D: ToKserd<'d>,
E: ToKserd<'e>,
F: ToKserd<'f>,
G: ToKserd<'g>,
H: ToKserd<'h>,
[src]
A: ToKserd<'a>,
B: ToKserd<'b>,
C: ToKserd<'c>,
D: ToKserd<'d>,
E: ToKserd<'e>,
F: ToKserd<'f>,
G: ToKserd<'g>,
H: ToKserd<'h>,
fn into_kserd(self) -> Result<Kserd<'kserd>, ToKserdErr>
[src]
impl<'kserd, 'a: 'kserd, 'b: 'kserd, 'c: 'kserd, 'd: 'kserd, 'e: 'kserd, 'f: 'kserd, 'g: 'kserd, 'h: 'kserd, 'i: 'kserd, A, B, C, D, E, F, G, H, I> ToKserd<'kserd> for (A, B, C, D, E, F, G, H, I) where
A: ToKserd<'a>,
B: ToKserd<'b>,
C: ToKserd<'c>,
D: ToKserd<'d>,
E: ToKserd<'e>,
F: ToKserd<'f>,
G: ToKserd<'g>,
H: ToKserd<'h>,
I: ToKserd<'i>,
[src]
A: ToKserd<'a>,
B: ToKserd<'b>,
C: ToKserd<'c>,
D: ToKserd<'d>,
E: ToKserd<'e>,
F: ToKserd<'f>,
G: ToKserd<'g>,
H: ToKserd<'h>,
I: ToKserd<'i>,
fn into_kserd(self) -> Result<Kserd<'kserd>, ToKserdErr>
[src]
impl<'kserd, 'a: 'kserd, 'b: 'kserd, 'c: 'kserd, 'd: 'kserd, 'e: 'kserd, 'f: 'kserd, 'g: 'kserd, 'h: 'kserd, 'i: 'kserd, 'j: 'kserd, A, B, C, D, E, F, G, H, I, J> ToKserd<'kserd> for (A, B, C, D, E, F, G, H, I, J) where
A: ToKserd<'a>,
B: ToKserd<'b>,
C: ToKserd<'c>,
D: ToKserd<'d>,
E: ToKserd<'e>,
F: ToKserd<'f>,
G: ToKserd<'g>,
H: ToKserd<'h>,
I: ToKserd<'i>,
J: ToKserd<'j>,
[src]
A: ToKserd<'a>,
B: ToKserd<'b>,
C: ToKserd<'c>,
D: ToKserd<'d>,
E: ToKserd<'e>,
F: ToKserd<'f>,
G: ToKserd<'g>,
H: ToKserd<'h>,
I: ToKserd<'i>,
J: ToKserd<'j>,
fn into_kserd(self) -> Result<Kserd<'kserd>, ToKserdErr>
[src]
impl<'kserd, 'a: 'kserd, 'b: 'kserd, 'c: 'kserd, 'd: 'kserd, 'e: 'kserd, 'f: 'kserd, 'g: 'kserd, 'h: 'kserd, 'i: 'kserd, 'j: 'kserd, 'k: 'kserd, A, B, C, D, E, F, G, H, I, J, K> ToKserd<'kserd> for (A, B, C, D, E, F, G, H, I, J, K) where
A: ToKserd<'a>,
B: ToKserd<'b>,
C: ToKserd<'c>,
D: ToKserd<'d>,
E: ToKserd<'e>,
F: ToKserd<'f>,
G: ToKserd<'g>,
H: ToKserd<'h>,
I: ToKserd<'i>,
J: ToKserd<'j>,
K: ToKserd<'k>,
[src]
A: ToKserd<'a>,
B: ToKserd<'b>,
C: ToKserd<'c>,
D: ToKserd<'d>,
E: ToKserd<'e>,
F: ToKserd<'f>,
G: ToKserd<'g>,
H: ToKserd<'h>,
I: ToKserd<'i>,
J: ToKserd<'j>,
K: ToKserd<'k>,
fn into_kserd(self) -> Result<Kserd<'kserd>, ToKserdErr>
[src]
impl<'kserd, 'a: 'kserd, 'b: 'kserd, 'c: 'kserd, 'd: 'kserd, 'e: 'kserd, 'f: 'kserd, 'g: 'kserd, 'h: 'kserd, 'i: 'kserd, 'j: 'kserd, 'k: 'kserd, 'l: 'kserd, A, B, C, D, E, F, G, H, I, J, K, L> ToKserd<'kserd> for (A, B, C, D, E, F, G, H, I, J, K, L) where
A: ToKserd<'a>,
B: ToKserd<'b>,
C: ToKserd<'c>,
D: ToKserd<'d>,
E: ToKserd<'e>,
F: ToKserd<'f>,
G: ToKserd<'g>,
H: ToKserd<'h>,
I: ToKserd<'i>,
J: ToKserd<'j>,
K: ToKserd<'k>,
L: ToKserd<'l>,
[src]
A: ToKserd<'a>,
B: ToKserd<'b>,
C: ToKserd<'c>,
D: ToKserd<'d>,
E: ToKserd<'e>,
F: ToKserd<'f>,
G: ToKserd<'g>,
H: ToKserd<'h>,
I: ToKserd<'i>,
J: ToKserd<'j>,
K: ToKserd<'k>,
L: ToKserd<'l>,
fn into_kserd(self) -> Result<Kserd<'kserd>, ToKserdErr>
[src]
impl<'a, T: ToKserd<'a>> ToKserd<'a> for [T; 1]
[src]
fn into_kserd(self) -> Result<Kserd<'a>, ToKserdErr>
[src]
impl<'a, T: ToKserd<'a>> ToKserd<'a> for [T; 2]
[src]
fn into_kserd(self) -> Result<Kserd<'a>, ToKserdErr>
[src]
impl<'a, T: ToKserd<'a>> ToKserd<'a> for [T; 3]
[src]
fn into_kserd(self) -> Result<Kserd<'a>, ToKserdErr>
[src]
impl<'a, T: ToKserd<'a>> ToKserd<'a> for [T; 4]
[src]
fn into_kserd(self) -> Result<Kserd<'a>, ToKserdErr>
[src]
impl<'a, T: ToKserd<'a>> ToKserd<'a> for [T; 5]
[src]
fn into_kserd(self) -> Result<Kserd<'a>, ToKserdErr>
[src]
impl<'a, T: ToKserd<'a>> ToKserd<'a> for [T; 6]
[src]
fn into_kserd(self) -> Result<Kserd<'a>, ToKserdErr>
[src]
impl<'a, T: ToKserd<'a>> ToKserd<'a> for [T; 7]
[src]
fn into_kserd(self) -> Result<Kserd<'a>, ToKserdErr>
[src]
impl<'a, T: ToKserd<'a>> ToKserd<'a> for [T; 8]
[src]
fn into_kserd(self) -> Result<Kserd<'a>, ToKserdErr>
[src]
impl<'a, T: ToKserd<'a>> ToKserd<'a> for [T; 9]
[src]
fn into_kserd(self) -> Result<Kserd<'a>, ToKserdErr>
[src]
impl<'a, T: ToKserd<'a>> ToKserd<'a> for [T; 10]
[src]
fn into_kserd(self) -> Result<Kserd<'a>, ToKserdErr>
[src]
impl<'a, T: ToKserd<'a>> ToKserd<'a> for [T; 11]
[src]
fn into_kserd(self) -> Result<Kserd<'a>, ToKserdErr>
[src]
impl<'a, T: ToKserd<'a>> ToKserd<'a> for [T; 12]
[src]
fn into_kserd(self) -> Result<Kserd<'a>, ToKserdErr>
[src]
impl<'a, T: ToKserd<'a>> ToKserd<'a> for [T; 13]
[src]
fn into_kserd(self) -> Result<Kserd<'a>, ToKserdErr>
[src]
impl<'a, T: ToKserd<'a>> ToKserd<'a> for [T; 14]
[src]
fn into_kserd(self) -> Result<Kserd<'a>, ToKserdErr>
[src]
impl<'a, T: ToKserd<'a>> ToKserd<'a> for [T; 15]
[src]
fn into_kserd(self) -> Result<Kserd<'a>, ToKserdErr>
[src]
impl<'a, T: ToKserd<'a>> ToKserd<'a> for [T; 16]
[src]
fn into_kserd(self) -> Result<Kserd<'a>, ToKserdErr>
[src]
impl<'a, T: ToKserd<'a>> ToKserd<'a> for [T; 17]
[src]
fn into_kserd(self) -> Result<Kserd<'a>, ToKserdErr>
[src]
impl<'a, T: ToKserd<'a>> ToKserd<'a> for [T; 18]
[src]
fn into_kserd(self) -> Result<Kserd<'a>, ToKserdErr>
[src]
impl<'a, T: ToKserd<'a>> ToKserd<'a> for [T; 19]
[src]
fn into_kserd(self) -> Result<Kserd<'a>, ToKserdErr>
[src]
impl<'a, T: ToKserd<'a>> ToKserd<'a> for [T; 20]
[src]
fn into_kserd(self) -> Result<Kserd<'a>, ToKserdErr>
[src]
impl<'a, T: ToKserd<'a>> ToKserd<'a> for [T; 21]
[src]
fn into_kserd(self) -> Result<Kserd<'a>, ToKserdErr>
[src]
impl<'a, T: ToKserd<'a>> ToKserd<'a> for [T; 22]
[src]
fn into_kserd(self) -> Result<Kserd<'a>, ToKserdErr>
[src]
impl<'a, T: ToKserd<'a>> ToKserd<'a> for [T; 23]
[src]
fn into_kserd(self) -> Result<Kserd<'a>, ToKserdErr>
[src]
impl<'a, T: ToKserd<'a>> ToKserd<'a> for [T; 24]
[src]
fn into_kserd(self) -> Result<Kserd<'a>, ToKserdErr>
[src]
impl<'a, T: ToKserd<'a>> ToKserd<'a> for [T; 25]
[src]
fn into_kserd(self) -> Result<Kserd<'a>, ToKserdErr>
[src]
impl<'a, T: ToKserd<'a>> ToKserd<'a> for [T; 26]
[src]
fn into_kserd(self) -> Result<Kserd<'a>, ToKserdErr>
[src]
impl<'a, T: ToKserd<'a>> ToKserd<'a> for [T; 27]
[src]
fn into_kserd(self) -> Result<Kserd<'a>, ToKserdErr>
[src]
impl<'a, T: ToKserd<'a>> ToKserd<'a> for [T; 28]
[src]
fn into_kserd(self) -> Result<Kserd<'a>, ToKserdErr>
[src]
impl<'a, T: ToKserd<'a>> ToKserd<'a> for [T; 29]
[src]
fn into_kserd(self) -> Result<Kserd<'a>, ToKserdErr>
[src]
impl<'a, T: ToKserd<'a>> ToKserd<'a> for [T; 30]
[src]
fn into_kserd(self) -> Result<Kserd<'a>, ToKserdErr>
[src]
impl<'a, T: ToKserd<'a>> ToKserd<'a> for [T; 31]
[src]
fn into_kserd(self) -> Result<Kserd<'a>, ToKserdErr>
[src]
impl<'a, T: ToKserd<'a>> ToKserd<'a> for [T; 32]
[src]
fn into_kserd(self) -> Result<Kserd<'a>, ToKserdErr>
[src]
impl<'a, T: ToKserd<'a>> ToKserd<'a> for Vec<T>
[src]
fn into_kserd(self) -> Result<Kserd<'a>, ToKserdErr>
[src]
impl<'a, T> ToKserd<'a> for Box<T> where
T: ToKserd<'a>,
[src]
T: ToKserd<'a>,
fn into_kserd(self) -> Result<Kserd<'a>, ToKserdErr>
[src]
impl<'a, T> ToKserd<'a> for Option<T> where
T: ToKserd<'a>,
[src]
T: ToKserd<'a>,
Blanket implementation for Option<T>
.
The implementation does not wrap Some
values. Rather, if there is something, it is just
that value, or it will be an empty tuple with the name None
.
let option = Some(String::from("Hello, world!")); assert_eq!(option.into_kserd(), Ok(Kserd::new_str("Hello, world!"))); let option: Option<String> = None; assert_eq!(option.into_kserd(), Kserd::with_id("None", Value::Tuple(vec![])).map_err(From::from));
fn into_kserd(self) -> Result<Kserd<'a>, ToKserdErr>
[src]
impl<'kserd, 't: 'kserd, 'e: 'kserd, T, E> ToKserd<'kserd> for Result<T, E> where
T: ToKserd<'t>,
E: ToKserd<'e>,
[src]
T: ToKserd<'t>,
E: ToKserd<'e>,