Skip to main content

FromRow

Trait FromRow 

Source
pub trait FromRow: Sized {
    // Required method
    fn from_row(row: &mut Row) -> Result<Self, ExecError>;
}
Expand description

A type that can be built from a whole row.

By name for structs (survives column reordering and SELECT * drift; the mapping generated models will use), by position for tuples (quick ad-hoc reads). The hand-written shape — the same one code generation will emit — is one take per field:

use keelson_exec::{ExecError, FromRow, Row};

struct User {
    id: i64,
    email: Option<String>, // a nullable column must be an Option
}

impl FromRow for User {
    fn from_row(row: &mut Row) -> Result<Self, ExecError> {
        Ok(User {
            id: row.take("id")?,
            email: row.take("email")?,
        })
    }
}

Required Methods§

Source

fn from_row(row: &mut Row) -> Result<Self, ExecError>

Build Self out of row. Takes &mut so values move, never clone.

Dyn Compatibility§

This trait is not dyn compatible.

In older versions of Rust, dyn compatibility was called "object safety".

Implementations on Foreign Types§

Source§

impl<A: FromValue, B: FromValue, C: FromValue, D: FromValue, E: FromValue, F: FromValue, G: FromValue, H: FromValue> FromRow for (A, B, C, D, E, F, G, H)

Positional: element N reads column N.

Source§

fn from_row(row: &mut Row) -> Result<Self, ExecError>

Source§

impl<A: FromValue, B: FromValue, C: FromValue, D: FromValue, E: FromValue, F: FromValue, G: FromValue> FromRow for (A, B, C, D, E, F, G)

Positional: element N reads column N.

Source§

fn from_row(row: &mut Row) -> Result<Self, ExecError>

Source§

impl<A: FromValue, B: FromValue, C: FromValue, D: FromValue, E: FromValue, F: FromValue> FromRow for (A, B, C, D, E, F)

Positional: element N reads column N.

Source§

fn from_row(row: &mut Row) -> Result<Self, ExecError>

Source§

impl<A: FromValue, B: FromValue, C: FromValue, D: FromValue, E: FromValue> FromRow for (A, B, C, D, E)

Positional: element N reads column N.

Source§

fn from_row(row: &mut Row) -> Result<Self, ExecError>

Source§

impl<A: FromValue, B: FromValue, C: FromValue, D: FromValue> FromRow for (A, B, C, D)

Positional: element N reads column N.

Source§

fn from_row(row: &mut Row) -> Result<Self, ExecError>

Source§

impl<A: FromValue, B: FromValue, C: FromValue> FromRow for (A, B, C)

Positional: element N reads column N.

Source§

fn from_row(row: &mut Row) -> Result<Self, ExecError>

Source§

impl<A: FromValue, B: FromValue> FromRow for (A, B)

Positional: element N reads column N.

Source§

fn from_row(row: &mut Row) -> Result<Self, ExecError>

Source§

impl<A: FromValue> FromRow for (A,)

Positional: element N reads column N.

Source§

fn from_row(row: &mut Row) -> Result<Self, ExecError>

Implementors§

Source§

impl FromRow for Row

A row reads as itself, so fetch_all::<Row> hands back raw rows.