Комментарии 5
Отличный разбор, только разницы между &’static и: ‘static не понял. Первое является подмножеством второго, правильно? То-есть частный случай, когда который работает только для случаев аля &’static str?
Именно. String
вполне себе 'static
и при этом не содержит времён жизни.
T: 'static
означает, что тип T
если содержит ссылки, то только статические.
&'a T
можно представить как:
struct Ref<'a, T: ?Sized> {
reference: &'a T,
}
То есть для случая Ref<'static, T>
, эта структура не будет содержать нестатических ссылок, а значит она будет удовлетворять ограничению Ref<'static, T>: 'static
.
Хорошая статья. Жаль только тема ограничений лайфтаймов не раскрыта: "'a: 'b
", "for<'a>
" и т.п.
Зарегистрируйтесь на Хабре, чтобы оставить комментарий
Распространённые заблуждения о временах жизни в Rust