[][src]Crate serde_postgres

Serde Postgres

Easily deserialize rows from postgres into arbitrary structs. (Only deserialization is supported).

extern crate serde;
extern crate serde_derive;
extern crate serde_postgres;
extern crate postgres;

use std::error::Error;

use serde_derive::Deserialize;
use postgres::{Connection, TlsMode};

#[derive(Clone, Debug, Deserialize)]
struct Person {
    name: String,
    age: i32,
}

fn main() -> Result<(), Box<Error>> {
    let connection = Connection::connect("postgres://postgres@localhost:5432", TlsMode::None)?;

    connection.execute("CREATE TABLE IF NOT EXISTS Person (
    name VARCHAR NOT NULL,
    age INT NOT NULL
    )", &[])?;

    connection.execute("INSERT INTO Person (name, age) VALUES ($1, $2)",
    &[&"Jane", &23])?;

    connection.execute("INSERT INTO Person (name, age) VALUES ($1, $2)",
    &[&"Alice", &32])?;

    let rows = connection.query("SELECT name, age FROM Person", &[])?;

    let people: Vec<Person> = serde_postgres::from_rows(&rows)?;

    for person in people {
        println!("{:?}", person);
    }

    Ok(())
}

Re-exports

pub use de::from_row;
pub use de::from_rows;
pub use de::Deserializer;
pub use error::Error;
pub use error::Result;

Modules

de

Deserialize postgres rows into a Rust data structure.

error

When serializing or deserializing from Postgres rows goes wrong.