@@ -5,7 +5,7 @@ pub enum Value {
5
5
Int64 ( i64 ) ,
6
6
Float ( f32 ) ,
7
7
Double ( f64 ) ,
8
- String ( String ) ,
8
+ String ( CString ) ,
9
9
}
10
10
11
11
trait IntoValue {
@@ -31,11 +31,22 @@ impl_value!(u64, Int64);
31
31
impl_value ! ( i64 , Int64 ) ;
32
32
impl_value ! ( f32 , Float ) ;
33
33
impl_value ! ( f64 , Double ) ;
34
- impl_value ! ( String , String ) ;
34
+
35
+ impl IntoValue for String {
36
+ fn into_value ( self ) -> Result < Value > {
37
+ Ok ( Value :: String ( CString :: new ( self ) ?) )
38
+ }
39
+ }
35
40
36
41
impl IntoValue for & str {
37
42
fn into_value ( self ) -> Result < Value > {
38
- Ok ( Value :: String ( self . into ( ) ) )
43
+ Ok ( Value :: String ( CString :: new ( self ) ?) )
44
+ }
45
+ }
46
+
47
+ impl IntoValue for CString {
48
+ fn into_value ( self ) -> Result < Value > {
49
+ Ok ( Value :: String ( self ) )
39
50
}
40
51
}
41
52
@@ -50,25 +61,6 @@ pub enum Params {
50
61
Positional ( Vec < Value > ) ,
51
62
}
52
63
53
- impl Params {
54
- pub ( crate ) unsafe fn bind ( ptr : * mut xdb_stmt_t , params : Vec < Value > ) -> Result < ( ) > {
55
- for ( i, p) in params. into_iter ( ) . enumerate ( ) {
56
- let i = i as u16 + 1 ;
57
- let ret = match p {
58
- ParamValue :: Int ( v) => xdb_bind_int ( ptr, i, v) ,
59
- ParamValue :: Int64 ( v) => xdb_bind_int64 ( ptr, i, v) ,
60
- ParamValue :: Float ( v) => xdb_bind_float ( ptr, i, v) ,
61
- ParamValue :: Double ( v) => xdb_bind_double ( ptr, i, v) ,
62
- ParamValue :: String ( v) => xdb_bind_str ( ptr, i, CString :: new ( v) ?. as_ptr ( ) ) ,
63
- } ;
64
- if ret != 0 {
65
- return Err ( Error :: BindParams ) ;
66
- }
67
- }
68
- Ok ( ( ) )
69
- }
70
- }
71
-
72
64
pub trait IntoParams {
73
65
fn into_params ( self ) -> Result < Params > ;
74
66
}
0 commit comments