rocket_db_pools::diesel::prelude

Trait Insertable

Source
pub trait Insertable<T> {
    type Values;

    // Required method
    fn values(self) -> Self::Values;

    // Provided method
    fn insert_into(self, table: T) -> InsertStatement<T, Self::Values>
       where T: Table,
             Self: Sized { ... }
}
Expand description

Represents that a structure can be used to insert a new row into the database. This is automatically implemented for &[T] and &Vec<T> for inserting more than one record.

This trait can be derived

Required Associated Types§

Source

type Values

The VALUES clause to insert these records

The types used here are generally internal to Diesel. Implementations of this trait should use the Values type of other Insertable types. For example <diesel::dsl::Eq<column, &str> as Insertable<table>>::Values.

Required Methods§

Source

fn values(self) -> Self::Values

Construct Self::Values

Implementations of this trait typically call .values on other Insertable types.

Provided Methods§

Source

fn insert_into(self, table: T) -> InsertStatement<T, Self::Values>
where T: Table, Self: Sized,

Insert self into a given table.

foo.insert_into(table) is identical to insert_into(table).values(foo). However, when inserting from a select statement, this form is generally preferred.

§Example
users::table
    .select((
        users::name.concat("'s First Post"),
        users::id,
    ))
    .insert_into(posts::table)
    .into_columns((posts::title, posts::user_id))
    .execute(conn)?;

let inserted_posts = posts::table
    .select(posts::title)
    .load::<String>(conn)?;
let expected = vec!["Sean's First Post", "Tess's First Post"];
assert_eq!(expected, inserted_posts);

Implementations on Foreign Types§

Source§

impl<'a, T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, Tab> Insertable<Tab> for &'a (T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15)

Source§

impl<'a, T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, Tab> Insertable<Tab> for &'a (T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14)

Source§

impl<'a, T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, Tab> Insertable<Tab> for &'a (T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13)

Source§

impl<'a, T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, Tab> Insertable<Tab> for &'a (T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12)

Source§

impl<'a, T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, Tab> Insertable<Tab> for &'a (T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11)

Source§

impl<'a, T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, Tab> Insertable<Tab> for &'a (T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10)

Source§

impl<'a, T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, Tab> Insertable<Tab> for &'a (T0, T1, T2, T3, T4, T5, T6, T7, T8, T9)

Source§

impl<'a, T0, T1, T2, T3, T4, T5, T6, T7, T8, Tab> Insertable<Tab> for &'a (T0, T1, T2, T3, T4, T5, T6, T7, T8)

Source§

impl<'a, T0, T1, T2, T3, T4, T5, T6, T7, Tab> Insertable<Tab> for &'a (T0, T1, T2, T3, T4, T5, T6, T7)

Source§

impl<'a, T0, T1, T2, T3, T4, T5, T6, Tab> Insertable<Tab> for &'a (T0, T1, T2, T3, T4, T5, T6)

Source§

impl<'a, T0, T1, T2, T3, T4, T5, Tab> Insertable<Tab> for &'a (T0, T1, T2, T3, T4, T5)

Source§

impl<'a, T0, T1, T2, T3, T4, Tab> Insertable<Tab> for &'a (T0, T1, T2, T3, T4)

Source§

impl<'a, T0, T1, T2, T3, Tab> Insertable<Tab> for &'a (T0, T1, T2, T3)

Source§

impl<'a, T0, T1, T2, Tab> Insertable<Tab> for &'a (T0, T1, T2)
where (&'a T0, &'a T1, &'a T2): Insertable<Tab>,

Source§

impl<'a, T0, T1, Tab> Insertable<Tab> for &'a (T0, T1)
where (&'a T0, &'a T1): Insertable<Tab>,

Source§

type Values = <(&'a T0, &'a T1) as Insertable<Tab>>::Values

Source§

fn values(self) -> <&'a (T0, T1) as Insertable<Tab>>::Values

Source§

impl<'a, T0, Tab> Insertable<Tab> for &'a (T0,)
where (&'a T0,): Insertable<Tab>,

Source§

type Values = <(&'a T0,) as Insertable<Tab>>::Values

Source§

fn values(self) -> <&'a (T0,) as Insertable<Tab>>::Values

Source§

impl<'a, T, Tab> Insertable<Tab> for &'a Option<T>
where Option<&'a T>: Insertable<Tab>,

Source§

type Values = <Option<&'a T> as Insertable<Tab>>::Values

Source§

fn values(self) -> <&'a Option<T> as Insertable<Tab>>::Values

Source§

impl<'a, T, Tab> Insertable<Tab> for &'a [T]

Source§

type Values = BatchInsert<Vec<<&'a T as Insertable<Tab>>::Values>, Tab, (), false>

Source§

fn values(self) -> <&'a [T] as Insertable<Tab>>::Values

Source§

impl<'a, T, Tab> Insertable<Tab> for &'a Vec<T>
where &'a [T]: Insertable<Tab>,

Source§

type Values = <&'a [T] as Insertable<Tab>>::Values

Source§

fn values(self) -> <&'a Vec<T> as Insertable<Tab>>::Values

Source§

impl<'a, T, Tab, const N: usize> Insertable<Tab> for &'a [T; N]
where T: Insertable<Tab>, &'a T: Insertable<Tab>,

Source§

type Values = BatchInsert<Vec<<&'a T as Insertable<Tab>>::Values>, Tab, [<T as Insertable<Tab>>::Values; N], true>

Source§

fn values(self) -> <&'a [T; N] as Insertable<Tab>>::Values

Source§

impl<T0, ST0, Tab> Insertable<Tab> for (T0,)
where T0: Insertable<Tab, Values = ValuesClause<ST0, Tab>>,

Source§

impl<T0, T1, ST0, ST1, Tab> Insertable<Tab> for (T0, T1)
where T0: Insertable<Tab, Values = ValuesClause<ST0, Tab>>, T1: Insertable<Tab, Values = ValuesClause<ST1, Tab>>,

Source§

impl<T0, T1, T2, ST0, ST1, ST2, Tab> Insertable<Tab> for (T0, T1, T2)
where T0: Insertable<Tab, Values = ValuesClause<ST0, Tab>>, T1: Insertable<Tab, Values = ValuesClause<ST1, Tab>>, T2: Insertable<Tab, Values = ValuesClause<ST2, Tab>>,

Source§

impl<T0, T1, T2, T3, ST0, ST1, ST2, ST3, Tab> Insertable<Tab> for (T0, T1, T2, T3)
where T0: Insertable<Tab, Values = ValuesClause<ST0, Tab>>, T1: Insertable<Tab, Values = ValuesClause<ST1, Tab>>, T2: Insertable<Tab, Values = ValuesClause<ST2, Tab>>, T3: Insertable<Tab, Values = ValuesClause<ST3, Tab>>,

Source§

impl<T0, T1, T2, T3, T4, ST0, ST1, ST2, ST3, ST4, Tab> Insertable<Tab> for (T0, T1, T2, T3, T4)
where T0: Insertable<Tab, Values = ValuesClause<ST0, Tab>>, T1: Insertable<Tab, Values = ValuesClause<ST1, Tab>>, T2: Insertable<Tab, Values = ValuesClause<ST2, Tab>>, T3: Insertable<Tab, Values = ValuesClause<ST3, Tab>>, T4: Insertable<Tab, Values = ValuesClause<ST4, Tab>>,

Source§

impl<T0, T1, T2, T3, T4, T5, ST0, ST1, ST2, ST3, ST4, ST5, Tab> Insertable<Tab> for (T0, T1, T2, T3, T4, T5)
where T0: Insertable<Tab, Values = ValuesClause<ST0, Tab>>, T1: Insertable<Tab, Values = ValuesClause<ST1, Tab>>, T2: Insertable<Tab, Values = ValuesClause<ST2, Tab>>, T3: Insertable<Tab, Values = ValuesClause<ST3, Tab>>, T4: Insertable<Tab, Values = ValuesClause<ST4, Tab>>, T5: Insertable<Tab, Values = ValuesClause<ST5, Tab>>,

Source§

impl<T0, T1, T2, T3, T4, T5, T6, ST0, ST1, ST2, ST3, ST4, ST5, ST6, Tab> Insertable<Tab> for (T0, T1, T2, T3, T4, T5, T6)
where T0: Insertable<Tab, Values = ValuesClause<ST0, Tab>>, T1: Insertable<Tab, Values = ValuesClause<ST1, Tab>>, T2: Insertable<Tab, Values = ValuesClause<ST2, Tab>>, T3: Insertable<Tab, Values = ValuesClause<ST3, Tab>>, T4: Insertable<Tab, Values = ValuesClause<ST4, Tab>>, T5: Insertable<Tab, Values = ValuesClause<ST5, Tab>>, T6: Insertable<Tab, Values = ValuesClause<ST6, Tab>>,

Source§

impl<T0, T1, T2, T3, T4, T5, T6, T7, ST0, ST1, ST2, ST3, ST4, ST5, ST6, ST7, Tab> Insertable<Tab> for (T0, T1, T2, T3, T4, T5, T6, T7)
where T0: Insertable<Tab, Values = ValuesClause<ST0, Tab>>, T1: Insertable<Tab, Values = ValuesClause<ST1, Tab>>, T2: Insertable<Tab, Values = ValuesClause<ST2, Tab>>, T3: Insertable<Tab, Values = ValuesClause<ST3, Tab>>, T4: Insertable<Tab, Values = ValuesClause<ST4, Tab>>, T5: Insertable<Tab, Values = ValuesClause<ST5, Tab>>, T6: Insertable<Tab, Values = ValuesClause<ST6, Tab>>, T7: Insertable<Tab, Values = ValuesClause<ST7, Tab>>,

Source§

impl<T0, T1, T2, T3, T4, T5, T6, T7, T8, ST0, ST1, ST2, ST3, ST4, ST5, ST6, ST7, ST8, Tab> Insertable<Tab> for (T0, T1, T2, T3, T4, T5, T6, T7, T8)
where T0: Insertable<Tab, Values = ValuesClause<ST0, Tab>>, T1: Insertable<Tab, Values = ValuesClause<ST1, Tab>>, T2: Insertable<Tab, Values = ValuesClause<ST2, Tab>>, T3: Insertable<Tab, Values = ValuesClause<ST3, Tab>>, T4: Insertable<Tab, Values = ValuesClause<ST4, Tab>>, T5: Insertable<Tab, Values = ValuesClause<ST5, Tab>>, T6: Insertable<Tab, Values = ValuesClause<ST6, Tab>>, T7: Insertable<Tab, Values = ValuesClause<ST7, Tab>>, T8: Insertable<Tab, Values = ValuesClause<ST8, Tab>>,

Source§

impl<T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, ST0, ST1, ST2, ST3, ST4, ST5, ST6, ST7, ST8, ST9, Tab> Insertable<Tab> for (T0, T1, T2, T3, T4, T5, T6, T7, T8, T9)
where T0: Insertable<Tab, Values = ValuesClause<ST0, Tab>>, T1: Insertable<Tab, Values = ValuesClause<ST1, Tab>>, T2: Insertable<Tab, Values = ValuesClause<ST2, Tab>>, T3: Insertable<Tab, Values = ValuesClause<ST3, Tab>>, T4: Insertable<Tab, Values = ValuesClause<ST4, Tab>>, T5: Insertable<Tab, Values = ValuesClause<ST5, Tab>>, T6: Insertable<Tab, Values = ValuesClause<ST6, Tab>>, T7: Insertable<Tab, Values = ValuesClause<ST7, Tab>>, T8: Insertable<Tab, Values = ValuesClause<ST8, Tab>>, T9: Insertable<Tab, Values = ValuesClause<ST9, Tab>>,

Source§

impl<T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, ST0, ST1, ST2, ST3, ST4, ST5, ST6, ST7, ST8, ST9, ST10, Tab> Insertable<Tab> for (T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10)
where T0: Insertable<Tab, Values = ValuesClause<ST0, Tab>>, T1: Insertable<Tab, Values = ValuesClause<ST1, Tab>>, T2: Insertable<Tab, Values = ValuesClause<ST2, Tab>>, T3: Insertable<Tab, Values = ValuesClause<ST3, Tab>>, T4: Insertable<Tab, Values = ValuesClause<ST4, Tab>>, T5: Insertable<Tab, Values = ValuesClause<ST5, Tab>>, T6: Insertable<Tab, Values = ValuesClause<ST6, Tab>>, T7: Insertable<Tab, Values = ValuesClause<ST7, Tab>>, T8: Insertable<Tab, Values = ValuesClause<ST8, Tab>>, T9: Insertable<Tab, Values = ValuesClause<ST9, Tab>>, T10: Insertable<Tab, Values = ValuesClause<ST10, Tab>>,

Source§

impl<T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, ST0, ST1, ST2, ST3, ST4, ST5, ST6, ST7, ST8, ST9, ST10, ST11, Tab> Insertable<Tab> for (T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11)
where T0: Insertable<Tab, Values = ValuesClause<ST0, Tab>>, T1: Insertable<Tab, Values = ValuesClause<ST1, Tab>>, T2: Insertable<Tab, Values = ValuesClause<ST2, Tab>>, T3: Insertable<Tab, Values = ValuesClause<ST3, Tab>>, T4: Insertable<Tab, Values = ValuesClause<ST4, Tab>>, T5: Insertable<Tab, Values = ValuesClause<ST5, Tab>>, T6: Insertable<Tab, Values = ValuesClause<ST6, Tab>>, T7: Insertable<Tab, Values = ValuesClause<ST7, Tab>>, T8: Insertable<Tab, Values = ValuesClause<ST8, Tab>>, T9: Insertable<Tab, Values = ValuesClause<ST9, Tab>>, T10: Insertable<Tab, Values = ValuesClause<ST10, Tab>>, T11: Insertable<Tab, Values = ValuesClause<ST11, Tab>>,

Source§

impl<T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, ST0, ST1, ST2, ST3, ST4, ST5, ST6, ST7, ST8, ST9, ST10, ST11, ST12, Tab> Insertable<Tab> for (T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12)
where T0: Insertable<Tab, Values = ValuesClause<ST0, Tab>>, T1: Insertable<Tab, Values = ValuesClause<ST1, Tab>>, T2: Insertable<Tab, Values = ValuesClause<ST2, Tab>>, T3: Insertable<Tab, Values = ValuesClause<ST3, Tab>>, T4: Insertable<Tab, Values = ValuesClause<ST4, Tab>>, T5: Insertable<Tab, Values = ValuesClause<ST5, Tab>>, T6: Insertable<Tab, Values = ValuesClause<ST6, Tab>>, T7: Insertable<Tab, Values = ValuesClause<ST7, Tab>>, T8: Insertable<Tab, Values = ValuesClause<ST8, Tab>>, T9: Insertable<Tab, Values = ValuesClause<ST9, Tab>>, T10: Insertable<Tab, Values = ValuesClause<ST10, Tab>>, T11: Insertable<Tab, Values = ValuesClause<ST11, Tab>>, T12: Insertable<Tab, Values = ValuesClause<ST12, Tab>>,

Source§

impl<T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, ST0, ST1, ST2, ST3, ST4, ST5, ST6, ST7, ST8, ST9, ST10, ST11, ST12, ST13, Tab> Insertable<Tab> for (T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13)
where T0: Insertable<Tab, Values = ValuesClause<ST0, Tab>>, T1: Insertable<Tab, Values = ValuesClause<ST1, Tab>>, T2: Insertable<Tab, Values = ValuesClause<ST2, Tab>>, T3: Insertable<Tab, Values = ValuesClause<ST3, Tab>>, T4: Insertable<Tab, Values = ValuesClause<ST4, Tab>>, T5: Insertable<Tab, Values = ValuesClause<ST5, Tab>>, T6: Insertable<Tab, Values = ValuesClause<ST6, Tab>>, T7: Insertable<Tab, Values = ValuesClause<ST7, Tab>>, T8: Insertable<Tab, Values = ValuesClause<ST8, Tab>>, T9: Insertable<Tab, Values = ValuesClause<ST9, Tab>>, T10: Insertable<Tab, Values = ValuesClause<ST10, Tab>>, T11: Insertable<Tab, Values = ValuesClause<ST11, Tab>>, T12: Insertable<Tab, Values = ValuesClause<ST12, Tab>>, T13: Insertable<Tab, Values = ValuesClause<ST13, Tab>>,

Source§

impl<T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, ST0, ST1, ST2, ST3, ST4, ST5, ST6, ST7, ST8, ST9, ST10, ST11, ST12, ST13, ST14, Tab> Insertable<Tab> for (T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14)
where T0: Insertable<Tab, Values = ValuesClause<ST0, Tab>>, T1: Insertable<Tab, Values = ValuesClause<ST1, Tab>>, T2: Insertable<Tab, Values = ValuesClause<ST2, Tab>>, T3: Insertable<Tab, Values = ValuesClause<ST3, Tab>>, T4: Insertable<Tab, Values = ValuesClause<ST4, Tab>>, T5: Insertable<Tab, Values = ValuesClause<ST5, Tab>>, T6: Insertable<Tab, Values = ValuesClause<ST6, Tab>>, T7: Insertable<Tab, Values = ValuesClause<ST7, Tab>>, T8: Insertable<Tab, Values = ValuesClause<ST8, Tab>>, T9: Insertable<Tab, Values = ValuesClause<ST9, Tab>>, T10: Insertable<Tab, Values = ValuesClause<ST10, Tab>>, T11: Insertable<Tab, Values = ValuesClause<ST11, Tab>>, T12: Insertable<Tab, Values = ValuesClause<ST12, Tab>>, T13: Insertable<Tab, Values = ValuesClause<ST13, Tab>>, T14: Insertable<Tab, Values = ValuesClause<ST14, Tab>>,

Source§

impl<T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, ST0, ST1, ST2, ST3, ST4, ST5, ST6, ST7, ST8, ST9, ST10, ST11, ST12, ST13, ST14, ST15, Tab> Insertable<Tab> for (T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15)
where T0: Insertable<Tab, Values = ValuesClause<ST0, Tab>>, T1: Insertable<Tab, Values = ValuesClause<ST1, Tab>>, T2: Insertable<Tab, Values = ValuesClause<ST2, Tab>>, T3: Insertable<Tab, Values = ValuesClause<ST3, Tab>>, T4: Insertable<Tab, Values = ValuesClause<ST4, Tab>>, T5: Insertable<Tab, Values = ValuesClause<ST5, Tab>>, T6: Insertable<Tab, Values = ValuesClause<ST6, Tab>>, T7: Insertable<Tab, Values = ValuesClause<ST7, Tab>>, T8: Insertable<Tab, Values = ValuesClause<ST8, Tab>>, T9: Insertable<Tab, Values = ValuesClause<ST9, Tab>>, T10: Insertable<Tab, Values = ValuesClause<ST10, Tab>>, T11: Insertable<Tab, Values = ValuesClause<ST11, Tab>>, T12: Insertable<Tab, Values = ValuesClause<ST12, Tab>>, T13: Insertable<Tab, Values = ValuesClause<ST13, Tab>>, T14: Insertable<Tab, Values = ValuesClause<ST14, Tab>>, T15: Insertable<Tab, Values = ValuesClause<ST15, Tab>>,

Source§

impl<T, Tab> Insertable<Tab> for Vec<T>
where T: Insertable<Tab> + UndecoratedInsertRecord<Tab>,

Source§

type Values = BatchInsert<Vec<<T as Insertable<Tab>>::Values>, Tab, (), false>

Source§

fn values(self) -> <Vec<T> as Insertable<Tab>>::Values

Source§

impl<T, Tab, V> Insertable<Tab> for Option<T>
where T: Insertable<Tab, Values = ValuesClause<V, Tab>>, InsertableOptionHelper<T, V>: Insertable<Tab>,

Source§

type Values = <InsertableOptionHelper<T, V> as Insertable<Tab>>::Values

Source§

fn values(self) -> <Option<T> as Insertable<Tab>>::Values

Source§

impl<T, Tab, const N: usize> Insertable<Tab> for [T; N]
where T: Insertable<Tab>,

Source§

type Values = BatchInsert<Vec<<T as Insertable<Tab>>::Values>, Tab, [<T as Insertable<Tab>>::Values; N], true>

Source§

fn values(self) -> <[T; N] as Insertable<Tab>>::Values

Source§

impl<T, Tab, const N: usize> Insertable<Tab> for Box<[T; N]>
where T: Insertable<Tab>,

Source§

type Values = BatchInsert<Vec<<T as Insertable<Tab>>::Values>, Tab, [<T as Insertable<Tab>>::Values; N], true>

Source§

fn values(self) -> <Box<[T; N]> as Insertable<Tab>>::Values

Implementors§

Source§

impl<'a, 'b, ST, QS, DB, T, GB> Insertable<T> for &'b BoxedSelectStatement<'a, ST, QS, DB, GB>
where T: Table, &'b BoxedSelectStatement<'a, ST, QS, DB, GB>: Query, <<T as Table>::AllColumns as ValidGrouping<()>>::IsAggregate: MixedAggregates<No, Output = No>,

Source§

type Values = InsertFromSelect<&'b BoxedSelectStatement<'a, ST, QS, DB, GB>, <T as Table>::AllColumns>

Source§

impl<'a, F, S, D, W, O, LOf, G, H, LC, Tab> Insertable<Tab> for &'a SelectStatement<F, S, D, W, O, LOf, G, H, LC>
where Tab: Table, &'a SelectStatement<F, S, D, W, O, LOf, G, H, LC>: Query, <<Tab as Table>::AllColumns as ValidGrouping<()>>::IsAggregate: MixedAggregates<No, Output = No>,

Source§

type Values = InsertFromSelect<&'a SelectStatement<F, S, D, W, O, LOf, G, H, LC>, <Tab as Table>::AllColumns>

Source§

impl<'a, ST, QS, DB, T, GB> Insertable<T> for BoxedSelectStatement<'a, ST, QS, DB, GB>
where T: Table, BoxedSelectStatement<'a, ST, QS, DB, GB>: Query, <<T as Table>::AllColumns as ValidGrouping<()>>::IsAggregate: MixedAggregates<No, Output = No>,

Source§

type Values = InsertFromSelect<BoxedSelectStatement<'a, ST, QS, DB, GB>, <T as Table>::AllColumns>

Source§

impl<F, S, D, W, O, LOf, G, H, LC, Tab> Insertable<Tab> for SelectStatement<F, S, D, W, O, LOf, G, H, LC>
where Tab: Table, SelectStatement<F, S, D, W, O, LOf, G, H, LC>: Query, <<Tab as Table>::AllColumns as ValidGrouping<()>>::IsAggregate: MixedAggregates<No, Output = No>,

Source§

type Values = InsertFromSelect<SelectStatement<F, S, D, W, O, LOf, G, H, LC>, <Tab as Table>::AllColumns>