: 'a)
Все трейты, которые ты создаёшь, по умолчанию это Т: 'static. Здесь Т<'a>: 'a
я знаю, что такое дженерики и что такое лайфтаймы, но что здесь значит лайфтайм для GenericTrait - я не понимал
Что значение, реализующее этот тип, должно жить так долго, как заданный местом вызова лайфтайм
то есть, как я понимаю, тут: ввели лайфтайм 'а использовали 'а, чтобы ограничить GenericTrait, но т.к. 'a нигде не используется, то, по сути, шо с ним, шо со статиком, и если я создам где-то значение типа, реализующего GenericTrait, то я могу его использовать столько же, сколько объект того же самого трейта, но со статиком?
Раст будет ругаться, если ты его не используешь. Но вообще лайфтайм, объявленный рядом с самим трейтом, привязывается к нему
Ошибаешься 'static подмножество 'a, запись GenericTrait: 'static совершенно неравноценна той выше
'static же надмножество, так как позволяет жить дольше?
но если тут 'a указана как время жизни объекта трейта, то разве будут какие-то ограничения по сравнению со статиком?
Могут быть, могут не быть 'а <= 'static
'static «наследует» 'a в контексте вариантности
impl<'a> GenericTrait<'a> for &'a Foo impl<'a> GenericTrait for &'a Foo // не катит!
Но ведь 'а наследует? Даже синтаксис есть такой: 'а: 'static
а в каком случае могут быть?
'a означает, что объект живёт время жизни а. Оно может быть равным статику, а может быть меньше. Больше ничего быть не может, так как подразумевается, что статик объекты могут (это важно, что могут, но не обязаны) жить вечно.
https://doc.rust-lang.org/nomicon/subtyping.html
Синтаксически да ('a: 'b - a живёт минимум b, но может и дольше). Но я объяснял в другом контексте)
Обсуждают сегодня