Size: a a a

RU Rust GameDev — русскоговорящее сообщество

2020 April 02

R

Roman in RU Rust GameDev — русскоговорящее сообщество
Но сама ссылка жить дольше не должна
источник

R

Roman in RU Rust GameDev — русскоговорящее сообщество
Пример
{
let foo: &'static mut Foo = Box::leak(Box::new(Foo));
unsafe { Box::from_raw(foo) }
}
источник

R

Roman in RU Rust GameDev — русскоговорящее сообщество
Тут не UB, хотя есть 'static ссылка на объект живущий в скоупе
источник

p

polunin.ai in RU Rust GameDev — русскоговорящее сообщество
Roman
Но сама ссылка жить дольше не должна
Лайфтайм ссылка и есть время жизни ссылки. Ссылка не может жить меньше своего лайфтайма)
источник

R

Roman in RU Rust GameDev — русскоговорящее сообщество
Наоборот
источник

R

Roman in RU Rust GameDev — русскоговорящее сообщество
Ссылка &'a T не может жить дольше 'a
источник

p

polunin.ai in RU Rust GameDev — русскоговорящее сообщество
Roman
Ссылка &'a T не может жить дольше 'a
Тут говорится что ссылка живёт 'a времени
источник

p

polunin.ai in RU Rust GameDev — русскоговорящее сообщество
Она не может жить меньше или больше чем 'а
источник

R

Roman in RU Rust GameDev — русскоговорящее сообщество
Нет. Тут говорится что значение T живет не меньше чем 'a
источник

R

Roman in RU Rust GameDev — русскоговорящее сообщество
А ссылка живет сколько хочет
источник

R

Roman in RU Rust GameDev — русскоговорящее сообщество
Но не больше 'a
источник

R

Roman in RU Rust GameDev — русскоговорящее сообщество
вот смотри
fn foo(rr: &'static &'static Foo) {}
fn bar(r: &'static Foo) {
 foo(&r); // error - can't borrow `r` for `'static` as its lifetime ends when `bar` scope ends
}
источник

R

Roman in RU Rust GameDev — русскоговорящее сообщество
r это ссылка на статический объект
источник

R

Roman in RU Rust GameDev — русскоговорящее сообщество
Но сама она живет меньше
источник

R

Roman in RU Rust GameDev — русскоговорящее сообщество
Так же напоминаю, что ссылки ковариантны к своему lifetime параметру.
Поэтому первоначальное заимствование может иметь lifetime больше, чем параметр у ссылки
источник

p

polunin.ai in RU Rust GameDev — русскоговорящее сообщество
Roman
Нет. Тут говорится что значение T живет не меньше чем 'a
Тут говорится что T заимствуется на время 'a по иммутабельной ссылке
источник

R

Roman in RU Rust GameDev — русскоговорящее сообщество
Иммутабельно заимствованно
источник

R

Roman in RU Rust GameDev — русскоговорящее сообщество
&foo -  процесс заимствования
источник

R

Roman in RU Rust GameDev — русскоговорящее сообщество
&'a Foo - ссылка, валидная в течении 'a, то есть она не может жить дольше этого.
Заимствование для создание такой ссылки не менее 'a соответственно
источник

p

polunin.ai in RU Rust GameDev — русскоговорящее сообщество
Roman
&'a Foo - ссылка, валидная в течении 'a, то есть она не может жить дольше этого.
Заимствование для создание такой ссылки не менее 'a соответственно
Она живёт столько же сколько и 'а
источник