Skip to content

Commit ad69145

Browse files
committed
Generalize StatementContainer
1 parent ce53a49 commit ad69145

File tree

1 file changed

+16
-16
lines changed

1 file changed

+16
-16
lines changed

src/rows.rs

Lines changed: 16 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -16,39 +16,39 @@ use types::{FromSql, SessionInfo, WrongType};
1616
use stmt::{Statement, Column};
1717
use error::Error;
1818

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),
2222
}
2323

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;
2626

27-
fn deref(&self) -> &Statement<'a> {
27+
fn deref(&self) -> &T {
2828
match *self {
29-
StatementContainer::Borrowed(s) => s,
30-
StatementContainer::Owned(ref s) => s,
29+
MaybeOwned::Borrowed(s) => s,
30+
MaybeOwned::Owned(ref s) => s,
3131
}
3232
}
3333
}
3434

3535
/// The resulting rows of a query.
3636
pub struct Rows<'stmt> {
37-
stmt: StatementContainer<'stmt>,
37+
stmt: MaybeOwned<'stmt, Statement<'stmt>>,
3838
data: Vec<Vec<Option<Vec<u8>>>>,
3939
}
4040

4141
impl<'a> RowsNew<'a> for Rows<'a> {
4242
fn new(stmt: &'a Statement<'a>, data: Vec<Vec<Option<Vec<u8>>>>) -> Rows<'a> {
4343
Rows {
44-
stmt: StatementContainer::Borrowed(stmt),
44+
stmt: MaybeOwned::Borrowed(stmt),
4545
data: data,
4646
}
4747
}
4848

4949
fn new_owned(stmt: Statement<'a>, data: Vec<Vec<Option<Vec<u8>>>>) -> Rows<'a> {
5050
Rows {
51-
stmt: StatementContainer::Owned(stmt),
51+
stmt: MaybeOwned::Owned(stmt),
5252
data: data,
5353
}
5454
}
@@ -87,7 +87,7 @@ impl<'stmt> Rows<'stmt> {
8787
pub fn get<'a>(&'a self, idx: usize) -> Row<'a> {
8888
Row {
8989
stmt: &*self.stmt,
90-
data: Cow::Borrowed(&self.data[idx]),
90+
data: MaybeOwned::Borrowed(&self.data[idx]),
9191
}
9292
}
9393

@@ -122,7 +122,7 @@ impl<'a> Iterator for Iter<'a> {
122122
self.iter.next().map(|row| {
123123
Row {
124124
stmt: &*self.stmt,
125-
data: Cow::Borrowed(row),
125+
data: MaybeOwned::Borrowed(row),
126126
}
127127
})
128128
}
@@ -137,7 +137,7 @@ impl<'a> DoubleEndedIterator for Iter<'a> {
137137
self.iter.next_back().map(|row| {
138138
Row {
139139
stmt: &*self.stmt,
140-
data: Cow::Borrowed(row),
140+
data: MaybeOwned::Borrowed(row),
141141
}
142142
})
143143
}
@@ -148,7 +148,7 @@ impl<'a> ExactSizeIterator for Iter<'a> {}
148148
/// A single result row of a query.
149149
pub struct Row<'a> {
150150
stmt: &'a Statement<'a>,
151-
data: Cow<'a, [Option<Vec<u8>>]>,
151+
data: MaybeOwned<'a, Vec<Option<Vec<u8>>>>,
152152
}
153153

154154
impl<'a> fmt::Debug for Row<'a> {
@@ -385,7 +385,7 @@ impl<'trans, 'stmt> FallibleIterator for LazyRows<'trans, 'stmt> {
385385
.map(|r| {
386386
Row {
387387
stmt: self.stmt,
388-
data: Cow::Owned(r),
388+
data: MaybeOwned::Owned(r),
389389
}
390390
});
391391

0 commit comments

Comments
 (0)