Berkus
и тут боты
Berkus
очередная волна
Cat
очередная волна
медленная, буквально 5 минут назад зашёл в beginners (cmd+z теперь стирает полностью сообщение при редактировании?)
Matwey
https://yandex.ru/maps/-/CBU4UBeilC
Anton
РАСИЗМ
Evgεny
Господа, есть потребность в кастомном коннекторе для хупера, а именно вместо HttpConnector написать туда что-то такое, что будет вызывать функцию от урла, этакий мок. Есть у кого-нибудь пример подобного? В тесты хупера смотрел, там макросы и я не осилил
Evgεny
Дока говорит заимплементь коннектору Service с Request=Uri Response=Io а я хуй знает че за Io, для него только AsyncRead и AsyncWrite, это че прям все так серьезно
Golodnyi
если у меня в корне проекта 2 либа с именами reader.rs writer.rs и в /bin лежит viewer.rs, в котором я подключаю extern crate reader;, мне эти 2 либы надо в cargo.toml описывать, раст сам их не найдет?
Alexander
Эээ, признаться хз про две либы, я не уверен, что я точно знаю, но я не так разложил.
Alexander
В корне должна быть lib.rs
Alexander
В ней уже подключаться pub mod writer и reader
Alexander
А в бинарный exter crate название всей ботвы
Alexander
И потом use название ботвы::reader или writer
Golodnyi
да
Golodnyi
В ней уже подключаться pub mod writer и reader
ну эт получается 1 либа и 2 модуля, не очень
Alexander
Делаешь как я написал, но в либе ещё пишешь pub use reader::* и тоже для writer
Golodnyi
error[E0432]: unresolved import --> src/lib.rs:1:9 | 1 | pub use reader::*; | ^^^^^^^ error: aborting due to previous error
Golodnyi
походу надо src/reader/lib.rs src/writer/lib.rs у каждого свой cargo.toml
Alexander
Не, lib.rs точно не нужен.
Alexander
Попробуй use self::reader::* ну или как-то так.
Alexander
Погоди, а ты до этого написал mod reader ?
Golodnyi
да я не хочу их модулями делать
Golodnyi
я хочу их либами, reader и writer я условно их назвал, там просто совсем разный код, автономный, хочу развести их на либы, но держать в одной репе, чтоб не плодить их пока
Alexander
эээ, хз даже можно ли по сути все либы в одном крейте.
Golodnyi
ну вроде компилится тот вариант, что я выше написал, но очень медленно
Golodnyi
я собственно это в репе cargo подсмотрел, там так
Golodnyi
а вот внутри либ уже буду юзать модули, чтоб у каждой либы были свои модули, они не будут пересекаться и будет нормальная чистота кода)
Golodnyi
а я правильно понял что impl строятся только над структурой и добавляют методы в структуру?
Alexander
типа того
Victor
можно ещё к енумам impl делать и для простых типов трейты имплементить. Но суть - да - имплементация логики для типа.
Alexander
правильнее сказать для типов
Golodnyi
подскажите, не соображу let sensors: Vec<Flex> = config::get(&bitfield)?; for mut sensor in sensors {...} value moved here in previous iteration of loop
Golodnyi
в чем опасность этого, яж заимствую элемент вектора...
Sherzod
ты заимствуешь _значение_, лучше заимствуй _ссылку на значение_
Sherzod
for &mut sensor in sensors
Golodnyi
for &mut sensor in sensors
ну да, я припомнил что мьютбл ссылки как то так делаются, но получаю for &mut sensor in sensors { | ^^^^^^^^^^^ expected struct `config::Flex`, found &mut _
Golodnyi
структура у меня в другом модуле объявлена, но импортирована use config::Flex;
Victor
for sensor in &mut sensors {
Golodnyi
как все запутано)
Victor
как все запутано)
for sensor in sensors.iter_mut() {так чуть понятнее, наверное. Правда хз что каноничнее )
Golodnyi
for sensor in sensors.iter_mut() {так чуть понятнее, наверное. Правда хз что каноничнее )
чем меньше символов, тем лучше наверно, сделаю так)
Golodnyi
я вижу тут есть не плохая либа, которая мне подойдет для генерация html отчетов https://github.com/Stebalien/horrorshow-rs
Golodnyi
но есть ли какие то хорошие практики написания js кода для этого html или хотя бы практика инжектить js файлы в html
Golodnyi
на ум приходит компилить js в бинарник и выкладывать его содержимое в тег script, альтернативы есть какие то?
Golodnyi
У вектора есть метод dedup, который удаляет дублированные значения, а как его можно применить, если у меня вектор из структур, в структуре есть поле name и я хочу по уникальности поля name собрать уникальный вектор?)
պլհկ
dedup_by
Golodnyi
черт не совсем то, у меня не сортированный список
Golodnyi
эт вряд ли поможет, получится что они сгруппируются по 20 одинаковых индекстов
Маjко
черт не совсем то, у меня не сортированный список
Как иначе ты предлагаешь dedup работать?
Golodnyi
ну я о том же
Vladimir
Делай свой dedup через мапу
Или через сет, если нужно порядок оставить старым.
Маjко
Или через сет, если нужно порядок оставить старым.
Ну да, само собой. А у нас есть OrderedSet?
Маjко
В Stdlib емнип нет
Vladimir
BTreeSet?
Маjко
BTreeSet?
Он ordered по Ord, а не по порядку вставки
Vladimir
Он ordered по Ord, а не по порядку вставки
А зачем по порядку вставки, и такое вообще возможно?
Маjко
В целом нужная абстракция изи делается на Vec<Key> + HashSet<Key>
Vladimir
А зачем Vec?
Маjко
А зачем Vec?
Порядок вставки хранить, очевидно же. Товарищу нужно чтобы порядок не менялся между исходный и конечным вектором, он же сказал что по этому нельзя сортировать После BTreeSet будет отсортированный итератор значений
Vladimir
Значений нет, только ключей
Маjко
Значений нет, только ключей
В сете значение и есть ключ
Vladimir
if key in set { skip} else {set.put(key); return item;}
Маjко
Маjко
А я о чем?
Vladimir
Item это элемент исходного итератора
Маjко
Он же key
Vladimir
Сет вообще игнорим на выходе, выходит лейзи убиратель дубликатов
Αλεχ
Делаем одну итерацию, в хэшмапу добавляем индексы элементов которые надо добавить
Αλεχ
вторм проходом делаем вектор из полчуенных индексов
Golodnyi
Vec<Vec<Flex» - это еще нормально или уже совсем плохо?
Маjко
https://play.rust-lang.org/?gist=c4f3e2a768da3c9be9181bd0286f5fbe&version=stable&mode=debug
Маjко
Вот в один проход и без клонирований, ленивым итератором