Trait PropertiesBackend

Source
pub trait PropertiesBackend {
    type DataFilesAvailability: DataFilesAvailability;

    // Provided methods
    fn map_if_available<T, U>(
        v: <Self::DataFilesAvailability as DataFilesAvailability>::Result<'_, T>,
        f: impl FnOnce(T) -> U,
    ) -> <Self::DataFilesAvailability as DataFilesAvailability>::Result<'_, U> { ... }
    fn zip_if_available<'err, T1, T2>(
        v1: <Self::DataFilesAvailability as DataFilesAvailability>::Result<'err, T1>,
        v2: <Self::DataFilesAvailability as DataFilesAvailability>::Result<'err, T2>,
    ) -> <Self::DataFilesAvailability as DataFilesAvailability>::Result<'err, (T1, T2)> { ... }
}
Expand description

Common trait for type parameters of SwhGraphProperties

Required Associated Types§

Provided Methods§

Source

fn map_if_available<T, U>( v: <Self::DataFilesAvailability as DataFilesAvailability>::Result<'_, T>, f: impl FnOnce(T) -> U, ) -> <Self::DataFilesAvailability as DataFilesAvailability>::Result<'_, U>

Applies the given function f to the value v if the value is available

This is an alias for <Self::DataFilesAvailability as DataFilesAvailability>::map(v, f), meaning that:

  1. if Self::DataFilesAvailability is GuaranteedDataFiles, then map_if_available(v, f) is equivalent to f(v) and has type U
  2. if Self::DataFilesAvailability is OptionalDataFiles, then map_if_available(v, f) is equivalent to v.map(f) and has type Result<U, &'err UnavailableProperty>
Source

fn zip_if_available<'err, T1, T2>( v1: <Self::DataFilesAvailability as DataFilesAvailability>::Result<'err, T1>, v2: <Self::DataFilesAvailability as DataFilesAvailability>::Result<'err, T2>, ) -> <Self::DataFilesAvailability as DataFilesAvailability>::Result<'err, (T1, T2)>

Returns (v1, v2) if both are available, or an error otherwise

This is an alias for <Self::DataFilesAvailability as DataFilesAvailability>::zip(v, f), meaning that:

  1. if Self::DataFilesAvailability is GuaranteedDataFiles, then zip_if_available(v1, v2) is equivalent to (v1, v2) and has type (T1, T2)
  2. if Self::DataFilesAvailability is OptionalDataFiles, then zip_if_available(v1, v2) is equivalent to v1.and_then(|v1| v2.map(|v2| (v1, v2))) and has type Result<(T1, T2), &'err UnavailableProperty>

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§