@@ -16,39 +16,39 @@ use types::{FromSql, SessionInfo, WrongType};
16
16
use stmt:: { Statement , Column } ;
17
17
use error:: Error ;
18
18
19
- enum StatementContainer < ' a > {
20
- Borrowed ( & ' a Statement < ' a > ) ,
21
- Owned ( Statement < ' a > ) ,
19
+ enum MaybeOwned < ' a , T : ' a > {
20
+ Borrowed ( & ' a T ) ,
21
+ Owned ( T ) ,
22
22
}
23
23
24
- impl < ' a > Deref for StatementContainer < ' a > {
25
- type Target = Statement < ' a > ;
24
+ impl < ' a , T > Deref for MaybeOwned < ' a , T > {
25
+ type Target = T ;
26
26
27
- fn deref ( & self ) -> & Statement < ' a > {
27
+ fn deref ( & self ) -> & T {
28
28
match * self {
29
- StatementContainer :: Borrowed ( s) => s,
30
- StatementContainer :: Owned ( ref s) => s,
29
+ MaybeOwned :: Borrowed ( s) => s,
30
+ MaybeOwned :: Owned ( ref s) => s,
31
31
}
32
32
}
33
33
}
34
34
35
35
/// The resulting rows of a query.
36
36
pub struct Rows < ' stmt > {
37
- stmt : StatementContainer < ' stmt > ,
37
+ stmt : MaybeOwned < ' stmt , Statement < ' stmt > > ,
38
38
data : Vec < Vec < Option < Vec < u8 > > > > ,
39
39
}
40
40
41
41
impl < ' a > RowsNew < ' a > for Rows < ' a > {
42
42
fn new ( stmt : & ' a Statement < ' a > , data : Vec < Vec < Option < Vec < u8 > > > > ) -> Rows < ' a > {
43
43
Rows {
44
- stmt : StatementContainer :: Borrowed ( stmt) ,
44
+ stmt : MaybeOwned :: Borrowed ( stmt) ,
45
45
data : data,
46
46
}
47
47
}
48
48
49
49
fn new_owned ( stmt : Statement < ' a > , data : Vec < Vec < Option < Vec < u8 > > > > ) -> Rows < ' a > {
50
50
Rows {
51
- stmt : StatementContainer :: Owned ( stmt) ,
51
+ stmt : MaybeOwned :: Owned ( stmt) ,
52
52
data : data,
53
53
}
54
54
}
@@ -87,7 +87,7 @@ impl<'stmt> Rows<'stmt> {
87
87
pub fn get < ' a > ( & ' a self , idx : usize ) -> Row < ' a > {
88
88
Row {
89
89
stmt : & * self . stmt ,
90
- data : Cow :: Borrowed ( & self . data [ idx] ) ,
90
+ data : MaybeOwned :: Borrowed ( & self . data [ idx] ) ,
91
91
}
92
92
}
93
93
@@ -122,7 +122,7 @@ impl<'a> Iterator for Iter<'a> {
122
122
self . iter . next ( ) . map ( |row| {
123
123
Row {
124
124
stmt : & * self . stmt ,
125
- data : Cow :: Borrowed ( row) ,
125
+ data : MaybeOwned :: Borrowed ( row) ,
126
126
}
127
127
} )
128
128
}
@@ -137,7 +137,7 @@ impl<'a> DoubleEndedIterator for Iter<'a> {
137
137
self . iter . next_back ( ) . map ( |row| {
138
138
Row {
139
139
stmt : & * self . stmt ,
140
- data : Cow :: Borrowed ( row) ,
140
+ data : MaybeOwned :: Borrowed ( row) ,
141
141
}
142
142
} )
143
143
}
@@ -148,7 +148,7 @@ impl<'a> ExactSizeIterator for Iter<'a> {}
148
148
/// A single result row of a query.
149
149
pub struct Row < ' a > {
150
150
stmt : & ' a Statement < ' a > ,
151
- data : Cow < ' a , [ Option < Vec < u8 > > ] > ,
151
+ data : MaybeOwned < ' a , Vec < Option < Vec < u8 > > > > ,
152
152
}
153
153
154
154
impl < ' a > fmt:: Debug for Row < ' a > {
@@ -385,7 +385,7 @@ impl<'trans, 'stmt> FallibleIterator for LazyRows<'trans, 'stmt> {
385
385
. map ( |r| {
386
386
Row {
387
387
stmt : self . stmt ,
388
- data : Cow :: Owned ( r) ,
388
+ data : MaybeOwned :: Owned ( r) ,
389
389
}
390
390
} ) ;
391
391
0 commit comments