Size: a a a

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

2020 October 22

Э

Эрик in Rust — русскоговорящее сообществo
Emmanuel Goldstein
С кодогенерацией мне придётся писать кучу обвязки поверх кодогенерации, плюс ещё дебажить кодосгенерированный код.
Особенно на редком языке, для которого эту самую генерацию не полировали годами.
1) десять строчек
2) да, там есть баги, но ты в них не упрёшься, скорее всего.
источник

RS

Roma S in Rust — русскоговорящее сообществo
Emmanuel Goldstein
Написать свой велосипед для IPC, в целом, быстрее.
https://github.com/volks73/framed-msgpack есть вот фреймед месадж пак, то есть тебе придётся только открыть сокеты
источник

EG

Emmanuel Goldstein in Rust — русскоговорящее сообществo
Roma S
https://github.com/volks73/framed-msgpack есть вот фреймед месадж пак, то есть тебе придётся только открыть сокеты
Сейчас посмотрю, спасибо
источник

RS

Roma S in Rust — русскоговорящее сообществo
(не то что бы фреймить/энвелопить самому было бы сложнее %) )
источник

EG

Emmanuel Goldstein in Rust — русскоговорящее сообществo
Отсутствие на crates.io не очень вдохновляет, но если сейчас за полчаса не допишу нормально свою версию, то попробую это
источник

V

Vetro in Rust — русскоговорящее сообществo
Напомните, пожалуйста, при выходе из функции - дропы вызываются в обратном порядке декларации, а для структур - сверху вниз для каждого свойства?
источник

EG

Emmanuel Goldstein in Rust — русскоговорящее сообществo
Vetro
Напомните, пожалуйста, при выходе из функции - дропы вызываются в обратном порядке декларации, а для структур - сверху вниз для каждого свойства?
В порядке декларации, если только не произошло паники в процессе создания структуры, в таком случае снизу-вверх
источник

V

Vetro in Rust — русскоговорящее сообществo
Emmanuel Goldstein
В порядке декларации, если только не произошло паники в процессе создания структуры, в таком случае снизу-вверх
Спасибо!
источник

EG

Emmanuel Goldstein in Rust — русскоговорящее сообществo
Struct {
   x: Smth::new(),
   y: Smth::new(),
   z: panic!()
}

y будет освобождён до x
источник

EG

Emmanuel Goldstein in Rust — русскоговорящее сообществo
Emmanuel Goldstein
Struct {
   x: Smth::new(),
   y: Smth::new(),
   z: panic!()
}

y будет освобождён до x
Можно считать, что это дешугарится в
let x = Smth::new();
let y = Smth::new();
let z = panic!();
Struct { x, y, z }
источник

KB

Kirill Bulatov in Rust — русскоговорящее сообществo
Roma S
там же линзы вроде есть, они не лучше? (я gutter и всё подобное отключаю, чтобы никаких чёртовых менюшек и не было, только код и статус лайн)
Код раздувают уж слишком.
Так-то и команды-шорткаты есть, но это всё не то, панелька с галочками сбоку нагляднее, проще и компактнее.
источник

L

Lev in Rust — русскоговорящее сообществo
Как можно разрешить что-то для rustfmt, вроде #[allow(...)]?
источник

EG

Emmanuel Goldstein in Rust — русскоговорящее сообществo
Lev
Как можно разрешить что-то для rustfmt, вроде #[allow(...)]?
#[rustfmt::skip]?
источник

L

Lev in Rust — русскоговорящее сообществo
Ок, спс
источник

D

Denis in Rust — русскоговорящее сообществo
Lev
Как можно разрешить что-то для rustfmt, вроде #[allow(...)]?
источник
2020 October 23

EG

Emmanuel Goldstein in Rust — русскоговорящее сообществo
У меня есть функция примерно
fn serve(&mut self, func: impl Fn(Arg) + Send + Sync + 'static) {
   let mut pool = scoped_threadpool::Pool::new();
   pool.scoped(|scope| loop {
       let arg = self.get_arg();
       scope.execute(|| func(arg));
   });
}
источник

EG

Emmanuel Goldstein in Rust — русскоговорящее сообществo
Emmanuel Goldstein
У меня есть функция примерно
fn serve(&mut self, func: impl Fn(Arg) + Send + Sync + 'static) {
   let mut pool = scoped_threadpool::Pool::new();
   pool.scoped(|scope| loop {
       let arg = self.get_arg();
       scope.execute(|| func(arg));
   });
}
Функция func() может фейлится. Как идиоматично поступать с её потенциальной ошибкой?
источник

EG

Emmanuel Goldstein in Rust — русскоговорящее сообществo
Я не хочу останавливать весь serve() из-за ошибки в одной функции, но совсем не обрабатывать как-то тоже не очень хорошо.
Можно, конечно, принимать ещё одним аргументом on_error: impl Fn(E) + Send + Sync + 'static, но тогда вызов будет несколько вербозным
источник

Э

Эрик in Rust — русскоговорящее сообществo
Emmanuel Goldstein
Я не хочу останавливать весь serve() из-за ошибки в одной функции, но совсем не обрабатывать как-то тоже не очень хорошо.
Можно, конечно, принимать ещё одним аргументом on_error: impl Fn(E) + Send + Sync + 'static, но тогда вызов будет несколько вербозным
Складывать в вектор и вектор возвращать?
источник

EG

Emmanuel Goldstein in Rust — русскоговорящее сообществo
Эрик
Складывать в вектор и вектор возвращать?
Можно, но при долгом времени работы сервера будет накапливаться огромный вектор
источник