Size: a a a

2021 March 04

А

Алексей in rust_offtopic
ты то конечно считаешь по другому, но мы уже в принципе выяснили что твоё мнение мало кому интересно
источник

RB

Roman Blog in rust_offtopic
а ты не можешь получить ссылку
источник

RB

Roman Blog in rust_offtopic
это ломает инварианты safe
источник

RB

Roman Blog in rust_offtopic
там он, насколько я понял, предлагал этот мусор как хинт, чтобы указать, что эта ссылка - это другая ссылка
источник

RB

Roman Blog in rust_offtopic
это тоже самое, что сделали они
источник

RB

Roman Blog in rust_offtopic
другого варианта нет. Либо вводить новые ссылки, но они уже не будут safe
источник

RB

Roman Blog in rust_offtopic
т.е. там проблема в том, что мы не можем узнать откуда взялась эта ссылка. Допустим, ты создал ссылку, которая не уникальная
источник

RB

Roman Blog in rust_offtopic
хорошо, ты можешь даже нарушив инвариант не сломать программу
источник

RB

Roman Blog in rust_offtopic
это уже позорище, но ладно. А далее у тебя есть функция f(& x)
источник

RB

Roman Blog in rust_offtopic
и ты туда передал эту ссылку. И всё, никто не знает откуда она пришла и какой код для неё генерировать
источник

RB

Roman Blog in rust_offtopic
поэтому и нужно завязываться на тип, чтобы ты мог определить это
источник

RB

Roman Blog in rust_offtopic
В общем,  если проще. А то вдруг опять непонятно. Раст может узнать является ли какая-то ссылка алиасом, но только в текущем скоупе, условно. Поэтому мы можем как-то аннотировать get и это поменяет поведение
источник

RB

Roman Blog in rust_offtopic
и это скрытая аннотация сохранится, даже если мы скопируем ссылку
источник

RB

Roman Blog in rust_offtopic
но, если мы говорим об отдельной функции - мы уже никак не узнаем об этой скрытой аннотации
источник

RB

Roman Blog in rust_offtopic
именно поэтому я говорил, что здесь нужен полиморфизм и почему именно С++ к этому приспособлен
источник

RB

Roman Blog in rust_offtopic
потому что на самом деле эти колхозные лайфтаймы - это просто некая вариация полиморфизма. Т.е. функция можем быть полиморфна по тому, какие из её аргументов/выхода алиасятся
источник

RB

Roman Blog in rust_offtopic
вот в модели С++ чекер будет иметь доступ к этой скрытой аннотации и такой проблемы не возникнет
источник

RB

Roman Blog in rust_offtopic
т.е. настоящий полиморфизм позволяет отслеживать алиасы безо всяких костылей типа лайфтаймов
источник

А⚙

Антон ⚙️ in rust_offtopic
badtrousers
все нормальные пацаны против этого
Но ты-то как раз ненормальный
источник

b

badtrousers in rust_offtopic
ой да ладно
источник