Size: a a a

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

2020 April 16

K0

Korvin 0x7CFE in Rust — русскоговорящее сообществo
Boris Vinogradov
выглядит более прострастраственным чем verilog на Rust, но более фундаментальным в тоже время
если под пространственностью вы понимаете многословность, то не забывайте что это промежуточное представление, то есть современному программисту руками его писать надо не чаще, чем ассемблер
источник

BV

Boris Vinogradov in Rust — русскоговорящее сообществo
Korvin 0x7CFE
если под пространственностью вы понимаете многословность, то не забывайте что это промежуточное представление, то есть современному программисту руками его писать надо не чаще, чем ассемблер
ну как автор ассемблера для авр я бы с вами поспорил (что считать обычным программистом то), но сама идея прям очень интересна)
источник

K0

Korvin 0x7CFE in Rust — русскоговорящее сообществo
идея в том чтобы в идеале верилог или вхдл были бы только на входе, а дальше уже по всему пайплайну идет llhd вплоть до самого синтеза
источник

BD

Berkus Decker in Rust — русскоговорящее сообществo
это в @embedded_rs?
источник

BV

Boris Vinogradov in Rust — русскоговорящее сообществo
а так давай к нам в эмбеддед чат
источник

K0

Korvin 0x7CFE in Rust — русскоговорящее сообществo
я не знаю такого канала, форвардните пожалуйста, если не трудно
источник

BD

Berkus Decker in Rust — русскоговорящее сообществo
Korvin 0x7CFE
я не знаю такого канала, форвардните пожалуйста, если не трудно
нажми на ссылочку то
источник

K0

Korvin 0x7CFE in Rust — русскоговорящее сообществo
спасибо, я в телеге без году неделя
источник

BV

Boris Vinogradov in Rust — русскоговорящее сообществo
Korvin 0x7CFE
спасибо, я в телеге без году неделя
я не сильно больше)
источник

f

folex in Rust — русскоговорящее сообществo
https://play.rust-lang.org/?version=stable&mode=debug&edition=2018&gist=7378681cbbe5a48b478af69d32e85f90

как бы мне избежать collect?


let elems = self.list.iter().cloned(); // вот тут без collect сохраняется ссылка на self
for elem in elems {
   self.bar(elem)
       // fn bar(&mut self)
}
источник

АГ

Алексей Герасимов in Rust — русскоговорящее сообществo
folex
https://play.rust-lang.org/?version=stable&mode=debug&edition=2018&gist=7378681cbbe5a48b478af69d32e85f90

как бы мне избежать collect?


let elems = self.list.iter().cloned(); // вот тут без collect сохраняется ссылка на self
for elem in elems {
   self.bar(elem)
       // fn bar(&mut self)
}
никак, раст не знает что ты в bar не обращаешься к self.list. можно разложить self на части и вызывать bar уже не у self. либо сам метод bar приписать конкретному полю, если возмоожно
источник

Э

Эрик in Rust — русскоговорящее сообществo
folex
https://play.rust-lang.org/?version=stable&mode=debug&edition=2018&gist=7378681cbbe5a48b478af69d32e85f90

как бы мне избежать collect?


let elems = self.list.iter().cloned(); // вот тут без collect сохраняется ссылка на self
for elem in elems {
   self.bar(elem)
       // fn bar(&mut self)
}
Смысл не слишком ясен. Там в листе что-то кроме вектора будет? bar должен менять вектор в листе или нет? Просто так туда-сюда кидать &mut ссылки не очень.
источник

f

folex in Rust — русскоговорящее сообществo
Эрик
Смысл не слишком ясен. Там в листе что-то кроме вектора будет? bar должен менять вектор в листе или нет? Просто так туда-сюда кидать &mut ссылки не очень.
bar будет выполнять работу, требующую &mut self. Это упрощенный код, в реальности bar отправляет эвент, это требует mut.
источник

Э

Эрик in Rust — русскоговорящее сообществo
folex
bar будет выполнять работу, требующую &mut self. Это упрощенный код, в реальности bar отправляет эвент, это требует mut.
Если вектор - кусок листа, то никак. Либо не требуй &mut List, либо клонируй вектор.
источник

f

folex in Rust — русскоговорящее сообществo
Алексей Герасимов
никак, раст не знает что ты в bar не обращаешься к self.list. можно разложить self на части и вызывать bar уже не у self. либо сам метод bar приписать конкретному полю, если возмоожно
Я надеялся что можно как-нибудь сказать мол .cloned()::<'static, _>, но увы
источник

f

folex in Rust — русскоговорящее сообществo
Эрик
Если вектор - кусок листа, то никак. Либо не требуй &mut List, либо клонируй вектор.
А я и хочу клонировать, я хочу написать cloned.

суть вообще такая:
for elem in self.list {
   self.foo(elem.clone())
}
источник

f

folex in Rust — русскоговорящее сообществo
Я просто не хочу делать .collect, тк не нужно же материализовывать коллекцию, можно делать for просто по итератору. Надо только сказать, что этот итератор содержит &'static
источник

f

folex in Rust — русскоговорящее сообществo
но видимо я неправильно понимаю итераторы, и так нельзя сделать
источник

Э

Эрик in Rust — русскоговорящее сообществo
Так нельзя. Если ты во время вызова bar (который ты тут foo назвал), ты меняешь вектор, то у тебя инвалидируется итератор. Потому что он по слайсу от старого вектора идёт.
источник

f

folex in Rust — русскоговорящее сообществo
Эрик
Так нельзя. Если ты во время вызова bar (который ты тут foo назвал), ты меняешь вектор, то у тебя инвалидируется итератор. Потому что он по слайсу от старого вектора идёт.
источник