Loo
)))
Αλεχ
глобальными переменными в расте являются типы, например
Αλεχ
и то, что объявлено с static и const вне функций
Αλεχ
всё
Αλεχ
все остальное - локальные переменные
Αλεχ
если упрощать и не вспоминать всякие разделяемые ресурсы ядра, которые могут выглядить как локальные переменные
Αλεχ
в текущем расте да
Αλεχ
точнее это переменная с единственным значением
Loyd
Не надо путать со скоупами (типы в глобальном скопе, могут быть и локальные типы, объяви в функции)
Loyd
Αλεχ
ну ок уговорили
Αλεχ
не переменная :)
Anonymous
ㅤ
ㅤ
Ты не забыл Share нажать?
Anonymous
Забыл
Anonymous
https://play.rust-lang.org/?gist=3e1189393b8a0b3ee5b884bd06c76d58&version=stable
Cuno
Чтобы тебе по этому указателю что-то писать, придется пилить unsafe
ㅤ
ㅤ
Здесь потому что нарушается mut ^ share
でゲソ
でゲソ
でゲソ
Loyd
Надо редактор на серво
Loyd
С растом
Loyd
Без жс
Αλεχ
Есть же IDEA
Αλεχ
и студия вроде
Αλεχ
тоже могёт
Αλεχ
native ftw
Anonymous
Αλεχ
А зачем тебе менять одно значение из трех мест?
Anonymous
по условию надо
Αλεχ
Прям так и написано?:) Я думал ты что-то более реалистичное делаешь
Αλεχ
Это не подъеб, просто обычно можно решить иначе
Αλεχ
не расшаривая мутабельный стейт на пол программы)
Anonymous
задача выше висит, она не моя и менять ее условия или говорить "так нельзя" я не хочу
Cuno
でゲソ
Loo
でゲソ
Чего ради
Loo
Anonymous
でゲソ
Смотрел в серво, увидел блюпуп апи, узнал что спеку блюпуп не дают инди
Loo
Anonymous
ну... Да, так получается нечто похожее через архитектурное читерство. Эдакое избегание указателей
Andrei
Anonymous
А если у меня массив с объектами и надо поменять местами два объекта, но так, чтоб перемещались не объекты, а только что-то указателеподобное?
Anonymous
Тут по-моему таким архитектурным читерством не обойтись
big
slice::swap мб?
Loo
Anonymous
и оно внутри не использует unsafe?
big
все рано или поздно его использует
Anonymous
А... То есть либо архитектурное читерство, либо unsafe в конфетной обертке =) Я кажется начинаю понимать
Anton
Ты бы прочитал сначала книгу официальную и растономикон
big
во. Но не в конфетной обертке, а скорее программиста в обертку завертывают, чтобы не отстрелил себе ничего
big
но всегда ее можно снять
big
а дальше уже танцы с лезвиями на мокром полу, как в старом добром си
Anonymous
Ну тут как с функциональными языками, в которых сишные библиотеки оборачиваются в "чистые функции", чтобы тоже нельзя было играться
Anonymous
А можно через unsafe нечищенную память оставить после завершения программы, если очень хочется?
Anton
Даже через safe можно:
https://doc.rust-lang.org/std/mem/fn.forget.html
big
Anonymous
let my_num: *mut i32 = libc::malloc(mem::size_of::<i32>()) as *mut i32; да, можно =)
big
Cuno
Sergey
doc
big
doc
Scientist вот ты все никак не откажешься от глобальных переменных, а ты корырялся в легаси кодовых базах, которые хрен куда сдвинешь из-за глобальных переменных? И обычно это какие-то тяжелые объекты. Их сложно тестировать, переинизиализировать, в несколько потоков юзать, кастомизировать код конкретный случай. И со временем приходит уже отвращение к подобным подходом.
big
вот пример кстати https://github.com/paritytech/polkadot/tree/master/substrate/environmental