vladislav
Вектор ты на стек не поместишь
Денис
блин, окей
Маjко
Да и вообще, не стек только смартпоинтеры и контейнеры
Денис
но век внутри делает аллокацию)
Anton
Денис
хорошо, переформулирую
Денис
по-моему эвристика такая: нет аллокации — стэк
Денис
=)
Маjко
Тише, не дай б-г он узнает, что аллокатор засоряет память
vladislav
Ребята, у меня память засорилась :(
Anton
в плюсах он int определяет через new, а потом delete его =)
Влад
floppy
Влад
наверно сам придумал
Денис
в общем нет, раст даже не пытается тебя заставить писать оптимальный код
Денис
(о ужас)
Anton
ну если детально углублятся - 42 может быть отрезано LLVM на этапе оптимизации
Влад
Денис
это всё уже implementation-defined
Денис
никаких гарантий на этот счёт нет
Anton
Anton
может отрежет, может не отрежет
Денис
а может добавит
Денис
=)
Anton
:D
Денис
просто чтобы потроллить
Anton
Happy debuging 😞
Денис
именно )
Денис
на самом деле это одно-единственное число вообще может в регистр уехать жить
Денис
всякое возможно в нашем бренном мире
Денис
@Lazzlo2096 юзай clippy и будет тебе счастье
Денис
серьёзно
Денис
https://github.com/rust-lang-nursery/rust-clippy
Влад
Это надуманная херня :)
вот конкретный пример, НО он существует, только потому что создалась переменная в другом скоупе, если бы на с++ ты создал переменную в том же скоупе, компилятор бы тебе сказал что такая переменная уже есть и ты не совершаешь такой ошибки
"Пример 9. Проект FCE Ultra. Двойное объявление переменной.
int iNesSaveAs(char* name)
{
...
fp = fopen(name,"wb");
int x = 0;
if (!fp)
int x = 1;
...
}
"
Влад
если такие ошибки делают, то и двойное обявление переменнной с одним именем делают и подавно, но компилятор тут же поправляет
vladislav
компилятор тебе бы сказал такое, если бы ты флаги поставил нужные
vladislav
по стандарту всё корректно
Влад
vladislav
что тем более?
Влад
Тем более, что если бы включил варнинги, то ты бы это заметил
vladislav
Называй переменные адекватно и продумывай дизайн методов, компилятор не спасёт тебя от всех ошибок
Влад
ну я же не говорю что собираюсь специально говнокодить. По этому и спрашиваю есть ли в rustc подобные варниги?
Денис
в твоём конкретном примере сразу два стандартных варнинга: неиспользуемая переменная и неиспользуемое присвоение
Денис
так что придумай что-то поинтересней, и не из сей, если можно
Денис
и тебе уже я два раза сказал
Денис
два
Денис
юзай КЛИППИ
vladislav
Влад
он встроен а rustc?
vladislav
омг
vladislav
тебе даже ссылку дали, ты прочитать не в силах?
Влад
погодите погодите, дайте хочть почиать что это
Денис
vladislav
Денис
Денис
один лучше божественнее другого)
Влад
Хорошо, буду юзать его
vladislav
урааа
Влад
в своё опрадвдание хочу сказать, что уже собирался прочитать что это (у меня уже была открыта вкладка), но сперва я хотел найти конкретный пример подобных ошибок, чтобы меня не держали за надумывальщика,кек
Anton
аминь
Денис
vladislav
скорее всего ты просто не опытный и не видел реальных ошибок в коде
Bugworm
такие ошибки крайне редки, и тот же clippy тебя от них избавит, если тебя это так сильно волнует. При этом, юзабилити у шадоуинга достаточно неплохое
Bugworm
в расте, по крайней мере, трудно налажать с шадоуингом имхо
Влад
Окей, спасибо что подсказали!
Антон
Αλεχ
Так, серьезный вопрос
Αλεχ
я хочу сделать хэшмапу с некоторыми объектами
Αλεχ
и массив с ссылками на объекты из этой хэшмапы
Αλεχ
как бы это так сделать, чтобы работало?
Αλεχ
struct Foo<'a> {
map: HashMap<String>
vec: Vec<&'a str>
}
Αλεχ
например
Αλεχ
и объекты vec это ссылки на значения из map
Loo
но вообще с self references в игрушечном траблы насколько я помню
Loo
там даже костыли в виде https://github.com/jpernst/rental
Loo
были
Filipp
Чому?