2015-12-27 2 views
1

Мне нужно знать цель оператора + и ключевое слово 'static в конце. Я понимаю, что 'static относится к жизни, но с какой целью он решает этот код.Какова цель оператора + в ассоциированном типе?

pub trait Group { 
    type ColumnValue: Sized + Clone + Eq + Hash + 'static; 

    // ...methods... 
} 

Я вытащил этот код текст из source file from the llamadb project.

+1

'+' - разделитель между [traits] (https://doc.rust-lang.org/reference.html#traits), который должен реализовывать 'ColumnValue'. '' static' указывает время жизни. Вы пробовали читать [документы] (https://doc.rust-lang.org/#language-reference)? – 9000

ответ

6

В этом контексте type X: Y означает, что X - это некоторый тип с ограничениями Y. + - способ объединения границ, так что X должен удовлетворять всем границ.

Другими словами, любая impl для Group должен иметь соответствующий тип ColumnValue, который SizedиClone смог иEq uatable иHash смог и'static.

Таким образом, любой код, использующий T: Group знает, что весь типа T::ColumnValue может быть сохранены в стеке (Sized), клонировали, проверяется на равенство, перемешанное и не имеет не- требования 'static пожизненных.

Смежные вопросы