Anton
ребят
Anton
а по поводу хакатона
Anton
Ilya
Смотри, замени переменную на вектор
Anton
если чо в питере и тд, куда можно запинить сообщение о хакатоне то
Anton
в ниженм так то есть it52
Anton
а по остальным каналам чо?
Ilya
Если его мутируешь - то он переаллоцирует память и ссылка уже в другое место будет указывать
Anton
Так я ссылаюсь не на его часть
Cat
Anton
А на вектор целиком
Anton
прост если реально есть желающие поучаствовать, надо бы как то организовать и инфу раскинуть и тд
Ilya
У меня есть несколько вариантов
Ilya
+ есть люди которые могут нам помочь
Anton
Там просто время жизни иммутабельных ссылок это вызов функции inspect
Anton
И компилятор вроде видит, что на момент, когда я их беру, их никто не может менять
Cat
а, я не в ту сторону пример развернул, ща
Anton
То есть, грубо говоря мутабельная ссылка может считаться иммутабельной во всех местах, кроме передачи её в мутирующую подфункцию
Anton
Или я неправ?
Ilya
Господи, как мне не хватает матклада
Ilya
Честно, не знаю)
Cat
math treasure?
Anton
Ну чисто по логике если подумать
Ilya
Я только знаю что компилятор этого не любит и приывк такие моменты обходить стороной
Anton
Мне просто очень не хватает таких правил в текущем расте
Anton
И я думаю, можно ли запилить свой раст с куртизанками, где можно будет так делать)
Cat
так, стоп
Cat
Anton
Без ансейфа нет
Cat
аааа
Cat
ну короче я просто неправильно понял вопрос
Anton
Cuno
Cat
я думал у тебя как раз получилось сделать immut + mut borrowing
Anton
тогда я подожду инфу
Anton
если чо будет пиши
Anton
или сюда или в лс, помогу чем смогу, все остальное по организации и плюшкам на проведение могу взять на себя включая интернет и тд)
Cat
Cuno
Cat
почему?
Anton
Cuno
nll фиксит же только класс ошибок, которые решаются правильной постановкой областей видимости.
Cat
всё так
Ilya
Чтобы убедится в том что не фиксит, достаточно его включить и с грустью смотреть на ошибку компиляции)
Anton
Почему?
Cat
Anton
Мы же по дереву вызовов всегда точно видим, где реально могут мутации происходить
Cuno
Почему?
Мутабельность ссылки это пруф того, что нет других указателей на переменную -> нет инвалидации никаких других указателей. Как ты с множеством указателей эту проблему решишь?
Cat
так он же вроде как раз про скопы
Cat
захват в render(), отпускание, захват mutable, отпускание, repeat
Anton
Cuno
Cat
это к изначальному вопросу
( вот этому https://play.rust-lang.org/?gist=00b1a11ffbcf79e00d2c29614c423bd0&version=stable )
Anton
Cat
(вмешиваюсь посередине разговора) конеш, но это про другое
Anton
Ну тут явно надо отпустить сначала a, она же по лайфтайму связана
Anton
Cuno
Cat
граница в том, что "ссылки" при возврате из функции "отпускаются", и не будут ломаться при дальнейшем переиспользовании
Cat
если ссылки явно объявлены, то понятно, так нельзя
Cat
а если это просто вызов функции с возвратом, то почему бы и нет
Cuno
Cuno
Но в этом немного смысла
Cat
fn bar() {
let mut data = vec!['a', 'b', 'c'];
let slice = &mut data[..]; // <-+ 'lifetime
capitalize(slice); // |
data.push('d'); // ERROR! // |
data.push('e'); // ERROR! // |
data.push('f'); // ERROR! // |
} // <------------------------------+
Anton
Ну я пока не смог придумать примера, в котором это было бы невалидно
Cat
Anton
Cat
Cuno
Это действительно другое.
Cuno
решается постановкой скобочек
Cat
ну тогда ок, я не прав значит
Anton
Тут типа у них скоуп закрывается слишком поздно
Cat
Anton
А я хочу сделать скоуп дырявым
Anton
Потому что по дереву вызовов чётко видно, где мутирующие скоупы