cassandra_proto/types/
from_cdrs.rs1use 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 {}