Size: a a a

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

2020 October 05

(L

(((Mike Lubinets))) in Rust — русскоговорящее сообществo
А, окей
источник

EG

Emmanuel Goldstein in Rust — русскоговорящее сообществo
Вытащить из базы сразу массив (а ещё Box<[u8; 32]> и любое другое извращение) я всё равно не могу
источник

Э

Эрик in Rust — русскоговорящее сообществo
Emmanuel Goldstein
Вытащить из базы сразу массив (а ещё Box<[u8; 32]> и любое другое извращение) я всё равно не могу
let x: [MaybeUninit<u8>; 32] = MaybeUninit::uninit().assume_init();
источник

EG

Emmanuel Goldstein in Rust — русскоговорящее сообществo
macro_rules! try_block {
   ($t:tt) => {
       (move || { $t })()
   }
}

Это очень плохо?
источник

EG

Emmanuel Goldstein in Rust — русскоговорящее сообществo
Эрик
let x: [MaybeUninit<u8>; 32] = MaybeUninit::uninit().assume_init();
У тебя тут UB и я не понимаю, как оно мне помогает вытащить сразу массив из базы, если для [u8; 32] не имплементирован FromSql
источник

EG

Emmanuel Goldstein in Rust — русскоговорящее сообществo
А, нет, тут нет UB. Вторая часть остаётся прежней.
источник

EG

Emmanuel Goldstein in Rust — русскоговорящее сообществo
Emmanuel Goldstein
macro_rules! try_block {
   ($t:tt) => {
       (move || { $t })()
   }
}

Это очень плохо?
Или просто напрямую так
источник

K

Kitsu in Rust — русскоговорящее сообществo
Хочется поведения сопоставимого с binary_search слайса, только для BTreeMap/Set. Т.е. если ключ не найден он возвращал ссылку (или ключ) на следующий элемент меньше/больше заданного ключа. Я так понимаю можно вычислить пару (tree.range(..k), tree.range(k..)), но это как-то некрасиво и видимо обойдет дерево дважды, хотя этого и не требуется, есть решение получше?
источник

Э

Эрик in Rust — русскоговорящее сообществo
Kitsu
Хочется поведения сопоставимого с binary_search слайса, только для BTreeMap/Set. Т.е. если ключ не найден он возвращал ссылку (или ключ) на следующий элемент меньше/больше заданного ключа. Я так понимаю можно вычислить пару (tree.range(..k), tree.range(k..)), но это как-то некрасиво и видимо обойдет дерево дважды, хотя этого и не требуется, есть решение получше?
Но bsearch же возвращает Err(insert_idx)?
источник

K

Kitsu in Rust — русскоговорящее сообществo
Эрик
Но bsearch же возвращает Err(insert_idx)?
ну да, но у дерева нет численных индексов
просто по нему можно понять элементы меньше/больше, хотя наверное и основная цель для того куда вставлять
источник

Э

Эрик in Rust — русскоговорящее сообществo
Kitsu
ну да, но у дерева нет численных индексов
просто по нему можно понять элементы меньше/больше, хотя наверное и основная цель для того куда вставлять
Ну есть вариант сделать tree.range(k..) и если там None сразу возвращает, то просто tree.last_key_value().
источник

Э

Эрик in Rust — русскоговорящее сообществo
Правда эта функция unstable.
источник

L

Lev in Rust — русскоговорящее сообществo
Как в CLion делать дебаг юнит-тестов? У меня выдает ошибку More than one binary was produced. Please specify --bin, --lib, --test or --example flag explicitly.
источник

K

Kitsu in Rust — русскоговорящее сообществo
Эрик
Ну есть вариант сделать tree.range(k..) и если там None сразу возвращает, то просто tree.last_key_value().
да не, tree.range вполне себе решение, только его зачем-то дважды надо вызывать, хотя дерево достаточно однажды обойти
источник

Э

Эрик in Rust — русскоговорящее сообществo
Kitsu
да не, tree.range вполне себе решение, только его зачем-то дважды надо вызывать, хотя дерево достаточно однажды обойти
Ну потому что гладиолус.
источник

Э

Эрик in Rust — русскоговорящее сообществo
Чтобы ты мог сделать чего хочешь, тебе надо внутреннюю ноду, которая может и взад и вперёд.
источник

Э

Эрик in Rust — русскоговорящее сообществo
Ну и last/first у BTree сделаны быстрее поиска рейнджи.
источник

K

Kitsu in Rust — русскоговорящее сообществo
у них семантика другая
источник

K

Kitsu in Rust — русскоговорящее сообществo
для мапы с ключами [1,2,3,5,6] с поиском по 4 я хочу получить 3 и 5, а не 1 и 6
источник

Э

Эрик in Rust — русскоговорящее сообществo
Kitsu
у них семантика другая
Да тебе рейндж надо один раз вызвать.
источник