cassandra_proto/types/
from_cdrs.rs

1use std::net::IpAddr;
2use time::Timespec;
3use uuid::Uuid;
4
5use crate::error::Result as CDRSResult;
6use crate::types::blob::Blob;
7use crate::types::decimal::Decimal;
8use crate::types::list::List;
9use crate::types::map::Map;
10use crate::types::tuple::Tuple;
11use crate::types::udt::UDT;
12use crate::types::{AsRustType, ByName, IntoRustByName};
13
14pub trait FromCDRS {
15  fn from_cdrs<T>(cdrs_type: T) -> CDRSResult<Option<Self>>
16  where
17    Self: Sized,
18    T: AsRustType<Self> + Sized,
19  {
20    cdrs_type.as_rust_type()
21  }
22
23  fn from_cdrs_r<T>(cdrs_type: T) -> CDRSResult<Self>
24  where
25    Self: Sized,
26    T: AsRustType<Self> + Sized,
27  {
28    cdrs_type.as_r_type()
29  }
30}
31
32impl FromCDRS for Blob {}
33impl FromCDRS for String {}
34impl FromCDRS for bool {}
35impl FromCDRS for i64 {}
36impl FromCDRS for i32 {}
37impl FromCDRS for i16 {}
38impl FromCDRS for i8 {}
39impl FromCDRS for f64 {}
40impl FromCDRS for f32 {}
41impl FromCDRS for IpAddr {}
42impl FromCDRS for Uuid {}
43impl FromCDRS for List {}
44impl FromCDRS for Map {}
45impl FromCDRS for UDT {}
46impl FromCDRS for Tuple {}
47impl FromCDRS for Timespec {}
48impl FromCDRS for Decimal {}
49
50pub trait FromCDRSByName {
51  fn from_cdrs_by_name<T>(cdrs_type: &T, name: &str) -> CDRSResult<Option<Self>>
52  where
53    Self: Sized,
54    T: ByName + IntoRustByName<Self> + Sized,
55  {
56    cdrs_type.by_name(name)
57  }
58
59  fn from_cdrs_r<T>(cdrs_type: &T, name: &str) -> CDRSResult<Self>
60  where
61    Self: Sized,
62    T: ByName + IntoRustByName<Self> + Sized + ::std::fmt::Debug,
63  {
64    cdrs_type.r_by_name(name)
65  }
66}
67
68impl FromCDRSByName for Blob {}
69impl FromCDRSByName for String {}
70impl FromCDRSByName for bool {}
71impl FromCDRSByName for i64 {}
72impl FromCDRSByName for i32 {}
73impl FromCDRSByName for i16 {}
74impl FromCDRSByName for i8 {}
75impl FromCDRSByName for f64 {}
76impl FromCDRSByName for f32 {}
77impl FromCDRSByName for IpAddr {}
78impl FromCDRSByName for Uuid {}
79impl FromCDRSByName for List {}
80impl FromCDRSByName for Map {}
81impl FromCDRSByName for UDT {}
82impl FromCDRSByName for Tuple {}
83impl FromCDRSByName for Timespec {}
84impl FromCDRSByName for Decimal {}