rocket_db_pools::diesel::prelude

Trait PgSortExpressionMethods

Source
pub trait PgSortExpressionMethods: Sized {
    // Provided methods
    fn nulls_first(self) -> NullsFirst<Self> { ... }
    fn nulls_last(self) -> NullsLast<Self> { ... }
}
Expand description

PostgreSQL expression methods related to sorting.

This trait is only implemented for Asc and Desc. Although .asc is implicit if no order is given, you will need to call .asc() explicitly in order to call these methods.

Provided Methods§

Source

fn nulls_first(self) -> NullsFirst<Self>

Specify that nulls should come before other values in this ordering.

Normally, nulls come last when sorting in ascending order and first when sorting in descending order.

§Example
diesel::insert_into(nullable_numbers)
    .values(&vec![
        nullable_number.eq(None),
        nullable_number.eq(Some(1)),
        nullable_number.eq(Some(2)),
    ])
    .execute(connection)?;

let asc_default_nulls = nullable_numbers.select(nullable_number)
    .order(nullable_number.asc())
    .load(connection)?;
assert_eq!(vec![Some(1), Some(2), None], asc_default_nulls);

let asc_nulls_first = nullable_numbers.select(nullable_number)
    .order(nullable_number.asc().nulls_first())
    .load(connection)?;
assert_eq!(vec![None, Some(1), Some(2)], asc_nulls_first);
Source

fn nulls_last(self) -> NullsLast<Self>

Specify that nulls should come after other values in this ordering.

Normally, nulls come last when sorting in ascending order and first when sorting in descending order.

§Example
diesel::insert_into(nullable_numbers)
    .values(&vec![
        nullable_number.eq(None),
        nullable_number.eq(Some(1)),
        nullable_number.eq(Some(2)),
    ])
    .execute(connection)?;

let desc_default_nulls = nullable_numbers.select(nullable_number)
    .order(nullable_number.desc())
    .load(connection)?;
assert_eq!(vec![None, Some(2), Some(1)], desc_default_nulls);

let desc_nulls_last = nullable_numbers.select(nullable_number)
    .order(nullable_number.desc().nulls_last())
    .load(connection)?;
assert_eq!(vec![Some(2), Some(1), None], desc_nulls_last);

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.

Implementors§