File tree 2 files changed +14
-7
lines changed
2 files changed +14
-7
lines changed Original file line number Diff line number Diff line change 1
- # crossdb-rs
1
+ # crossdb-rust
2
2
3
3
``` toml
4
4
[dependencies ]
@@ -31,9 +31,3 @@ fn main() -> Result<()> {
31
31
Ok (())
32
32
}
33
33
```
34
-
35
- ## TODO
36
-
37
- - NULL value
38
- - Dynamic link crossdb
39
- - use serde to serialize/deserialize
Original file line number Diff line number Diff line change @@ -26,6 +26,7 @@ pub use value::Value;
26
26
27
27
use crossdb_sys:: * ;
28
28
use lru:: LruCache ;
29
+ use serde:: de:: { value:: Error as DeError , DeserializeOwned } ;
29
30
use std:: ffi:: { CStr , CString } ;
30
31
use std:: fmt:: Display ;
31
32
use std:: num:: NonZeroUsize ;
@@ -156,6 +157,18 @@ impl Query {
156
157
Some ( Row { columns, values } )
157
158
}
158
159
160
+ pub fn fetch_row_as < T : DeserializeOwned > ( & mut self ) -> Option < Result < T , DeError > > {
161
+ self . fetch_row ( ) . map ( |row| row. deserialize ( ) )
162
+ }
163
+
164
+ pub fn fetch_rows_as < ' a , T : DeserializeOwned > ( mut self ) -> Result < Vec < T > , DeError > {
165
+ let mut rows = Vec :: with_capacity ( self . row_count ( ) ) ;
166
+ while let Some ( row) = self . fetch_row ( ) {
167
+ rows. push ( row. deserialize ( ) ?) ;
168
+ }
169
+ Ok ( rows)
170
+ }
171
+
159
172
fn inner_fetch_row_values ( & mut self ) -> Option < Vec < Value < ' _ > > > {
160
173
unsafe {
161
174
let row = xdb_fetch_row ( self . ptr ) ;
You can’t perform that action at this time.
0 commit comments