Vladimir
Так как везде система типов круче чем в таких форматах
Vladimir
Может, реализация на Rust лучше?
Там тоже пиздец был, код не читабельный и чеки существования полей по мере обращения к ним
Vladimir
А хочется валидации схемы
Маjко
@c_vld у rocksdb как с асинхронным доступом? Внешний мутекс нужен или нет?
Маjко
Хорошо
Vladimir
Но биндинги не очень местами, и могут требовать & mut
Kerrigan
Capnproto фронтендеры покусали? С каких пор там timetravel?
Маjко
Но биндинги не очень местами, и могут требовать & mut
В крейте rocksdb тольео на инициализации нужны)
պլհկ
Апишка капнпрото пиздец ебанистическая и как там сделать зерокопи я так и не разобрался
Маjко
@c_vld я делаю что-то не так походу х) Создал ColumnFamily Открываю базу просто через rocksdb::DB::open_default(path) Пытаюсь записать и вычитать из своей CF let key = b"rw_cf"; let value = b"rw_cf_value"; let cf = db.cf_handle("cf1").unwrap(); db.put_cf(cf, key, value).unwrap(); assert_eq!( &db.get_cf(cf, key).unwrap().unwrap()[..], value ); Тест падает, get возвращает Ok(None) 😕
Vladimir
А без cf?
Маjко
Без cf все ок
Маjко
Но опять же, вычитать из default не могу, если явно указываю cf
Vlad
https://docs.rs/github-gql-rs/0.0.1/github_gql/index.html
Не смотрел https://github.com/tomhoule/graphql-client как вариант?
Маjко
Всё, я довен. default руками нельзя референсить походу, добавил в Options при создании create_if_missing, всё норм)
Vlad
https://github.com/tomhoule/graphql-client/tree/master/examples/github
Маjко
Спасибо
Маjко
С валидацией схемы
Маjко
Намного лучше чем мой текущий костыль)
Маjко
потыкай tikv =) Как раз протестишь
Оно не встраиваемое ЕМНИП
Маjко
Ну да, для базы бота чутка оверкилл)
Anton
Зато распределенное =)
Маjко
Мне распределенность тестить негде
Invictus
Посоны, подскажите, в чём смысл присваивания вида let a = &1?
Invictus
Зачем присваивать ссылку?
Pavel
Зачем присваивать ссылку?
ссылка - тоже полноценный тип данных
Invictus
Ну т.е. по идее больше владельцев нет.
Invictus
Я понимаю, непонятен кейс.
Invictus
Оке, а кто тогда владеет значением?
Invictus
Или это необязательно?
Pavel
в обособленном примере у тебя - выглядит как незачем так делать, а так: зависит от контекста
Anton
Посоны, подскажите, в чём смысл присваивания вида let a = &1?
обычно так делают для переменных где нить в слайсе
Pavel
Оке, а кто тогда владеет значением?
по идее (но я могу быть и не прав) то т.к. это инт и он в этом случае будет выделен на стеке, то он будет в этом же скоупе и оставаться и по идее на него будет ссылаться вот эта ссылка которую ты записал в А
Anton
или есть у тебя вектор с данными, делаешь let ref x =
Pavel
Или это необязательно?
ссылка и факт владения - это разные смысловые части
Anton
я это и сказал 😊
ну я ктому - ссылка, не ссылка без разницы, просто видять у них куда то передают по ссылке, решили сократить запись
Invictus
Мда, к такому меня растбук не готовил.
Pavel
ну в расте подефолту все в стеке выделяется
Anton
let a = 1; foo(&a); bar(&a); let a = &1; foo(a); bar(a);
Pavel
Мда, к такому меня растбук не готовил.
вот тебе аналогия: в винде есть файл, а есть ярлык ссылающийся на файл. Т.е. в контексте ОС - это типа 2а разных элемента. И вот права на файл могут отличаться от прав на ярлык. Тут примерно так же
Денис
вектора и хешмапы тож?
ну... у вектора указатель на начало данных лежит на стэке :))
Anton
хотел пошутить, получилась серьёзная дискуссия =)
Денис
=))))
Anton
Кто нить кроме меня юзал tokio-proto ?
Anton
точнее tokio-proto + tokio-service
Anton
ща в место service - tower-rs, а прото забросили, и ручками дофига лишнего приходится, или может я не вкурсе
Invictus
а что смутило ?
Смутил синтаксис — присваивание ссылки на примитив, а не на переменную, его содержащую, я с таким не сталкивался.
Sergey
Смутил синтаксис — присваивание ссылки на примитив, а не на переменную, его содержащую, я с таким не сталкивался.
Представь, что это сахар, для создания переменной по месту и получения ссылки на неё
Invictus
Представь, что это сахар, для создания переменной по месту и получения ссылки на неё
А, т.е. чтобы не возиться с созданием переменной-владельца, если, скажем, хотим использовать какой-то метод, принимающий только ссылки?
Pavel
так компилятор за тебя подобное сделает
Anton
А бывает что clippy ошибается?
Alexander
например развёрнутый вариант: let d = 1 let a =&d
А если мы делаем только let d = 1 и никгда не берём указатель - Rust/llvm может просто запихать константу в регистр и нигде её не аллоцировать?
Anton
да
Ну отлично, а то я чуть голову не сломал пока думал что он от меня хочет на ровном месте
Pavel
А если мы делаем только let d = 1 и никгда не берём указатель - Rust/llvm может просто запихать константу в регистр и нигде её не аллоцировать?
не проверял, но есть в компиляторах такой этап компиляции как достижимость кода, и если этот кусок никогда не вызывается то его компилятор по идее должен не компилить в бинарник
Pavel
не проверял в смысле раст и llvm в частности
Alexander
не проверял, но есть в компиляторах такой этап компиляции как достижимость кода, и если этот кусок никогда не вызывается то его компилятор по идее должен не компилить в бинарник
Я не про dead code, я про то, что мы используем значение только "по значению", не берём указатель, и его можно просто положить в регистр и использовать напрямую оттуда.
Anton
Смишно)
Anton
Ну в приципе заюзал tokio-codec Framed, а там мелочь осталась