11use super :: result:: { CqlValue , Row } ;
2- use crate :: frame:: value:: { Counter , CqlDate , CqlDuration , CqlTime , CqlTimestamp , CqlTimeuuid } ;
2+ use crate :: frame:: value:: {
3+ Counter , CqlDate , CqlDuration , CqlTime , CqlTimestamp , CqlTimeuuid , CqlVarint ,
4+ } ;
35use bigdecimal:: BigDecimal ;
46use num_bigint:: BigInt ;
57use std:: collections:: { BTreeMap , BTreeSet , HashMap , HashSet } ;
@@ -125,7 +127,7 @@ impl_from_cql_value_from_method!(i32, as_int); // i32::from_cql<CqlValue>
125127impl_from_cql_value_from_method ! ( i64 , as_bigint) ; // i64::from_cql<CqlValue>
126128impl_from_cql_value_from_method ! ( Counter , as_counter) ; // Counter::from_cql<CqlValue>
127129impl_from_cql_value_from_method ! ( i16 , as_smallint) ; // i16::from_cql<CqlValue>
128- impl_from_cql_value_from_method ! ( BigInt , into_varint ) ; // BigInt ::from_cql<CqlValue>
130+ impl_from_cql_value_from_method ! ( CqlVarint , into_cql_varint ) ; // CqlVarint ::from_cql<CqlValue>
129131impl_from_cql_value_from_method ! ( i8 , as_tinyint) ; // i8::from_cql<CqlValue>
130132impl_from_cql_value_from_method ! ( f32 , as_float) ; // f32::from_cql<CqlValue>
131133impl_from_cql_value_from_method ! ( f64 , as_double) ; // f64::from_cql<CqlValue>
@@ -148,6 +150,15 @@ impl<const N: usize> FromCqlVal<CqlValue> for [u8; N] {
148150 }
149151}
150152
153+ impl FromCqlVal < CqlValue > for BigInt {
154+ fn from_cql ( cql_val : CqlValue ) -> Result < Self , FromCqlValError > {
155+ match cql_val {
156+ CqlValue :: Varint ( cql_varint) => Ok ( cql_varint. into ( ) ) ,
157+ _ => Err ( FromCqlValError :: BadCqlType ) ,
158+ }
159+ }
160+ }
161+
151162#[ cfg( feature = "chrono" ) ]
152163impl FromCqlVal < CqlValue > for NaiveDate {
153164 fn from_cql ( cql_val : CqlValue ) -> Result < Self , FromCqlValError > {
@@ -463,7 +474,7 @@ mod tests {
463474 let big_int = 0 . to_bigint ( ) . unwrap ( ) ;
464475 assert_eq ! (
465476 Ok ( big_int) ,
466- BigInt :: from_cql( CqlValue :: Varint ( 0 . to_bigint( ) . unwrap( ) ) )
477+ BigInt :: from_cql( CqlValue :: Varint ( 0 . to_bigint( ) . unwrap( ) . into ( ) ) )
467478 ) ;
468479 }
469480
0 commit comments