File tree Expand file tree Collapse file tree 2 files changed +14
-7
lines changed Expand file tree Collapse file tree 2 files changed +14
-7
lines changed Original file line number Diff line number Diff line change 1- # crossdb-rs
1+ # crossdb-rust
22
33``` toml
44[dependencies ]
@@ -31,9 +31,3 @@ fn main() -> Result<()> {
3131 Ok (())
3232}
3333```
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;
2626
2727use crossdb_sys:: * ;
2828use lru:: LruCache ;
29+ use serde:: de:: { value:: Error as DeError , DeserializeOwned } ;
2930use std:: ffi:: { CStr , CString } ;
3031use std:: fmt:: Display ;
3132use std:: num:: NonZeroUsize ;
@@ -156,6 +157,18 @@ impl Query {
156157 Some ( Row { columns, values } )
157158 }
158159
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+
159172 fn inner_fetch_row_values ( & mut self ) -> Option < Vec < Value < ' _ > > > {
160173 unsafe {
161174 let row = xdb_fetch_row ( self . ptr ) ;
You can’t perform that action at this time.
0 commit comments