pub trait RowExtractExt: Sealed {
// Required methods
fn extract_once<'row, T>(&'row self) -> T
where T: Extract<'row>;
fn extract<'row, T>(
&'row self,
columns: &mut Option<<T as Columns>::Columns>,
) -> T
where T: Extract<'row>;
fn extract_with_columns<'row, T>(
&'row self,
columns: &<T as Columns>::Columns,
) -> T
where T: Extract<'row>;
}
Expand description
Extension trait for extracting from a Row
.
Required Methods§
Sourcefn extract_once<'row, T>(&'row self) -> Twhere
T: Extract<'row>,
fn extract_once<'row, T>(&'row self) -> Twhere
T: Extract<'row>,
Extracts an instance of T
from this Row
.
This is equivalent to T::extract_once(self)
.
§Panics
Panics if Extract::extract_once
panics.
§Examples
#[derive(Columns, Extract)]
struct User<'a> {
id: i32,
name: &'a str,
}
fn map_user(row: &Row) -> User<'_> {
row.extract_once()
}
Sourcefn extract<'row, T>(
&'row self,
columns: &mut Option<<T as Columns>::Columns>,
) -> Twhere
T: Extract<'row>,
fn extract<'row, T>(
&'row self,
columns: &mut Option<<T as Columns>::Columns>,
) -> Twhere
T: Extract<'row>,
Extracts an instance of T
from this Row
, memorizing the mapping between
fields and columns.
This is equivalent to T::extract(columns, self)
.
§Panics
Panics if Extract::extract
panics.
§Examples
#[derive(Columns, Extract)]
struct User<'a> {
id: i32,
name: &'a str,
}
fn map_users(rows: &[Row]) -> Vec<User<'_>> {
let mut columns = None;
rows.iter().map(|row| row.extract(&mut columns)).collect()
}
Sourcefn extract_with_columns<'row, T>(
&'row self,
columns: &<T as Columns>::Columns,
) -> Twhere
T: Extract<'row>,
fn extract_with_columns<'row, T>(
&'row self,
columns: &<T as Columns>::Columns,
) -> Twhere
T: Extract<'row>,
Extracts an instance of T
from this Row
and a mapping between the
fields and columns.
This is equivalent to T::extract_with_columns(columns, self)
.
§Panics
Panics if Extract::extract_with_columns
panics.
Dyn Compatibility§
This trait is not dyn compatible.
In older versions of Rust, dyn compatibility was called "object safety", so this trait is not object safe.