Marat
Loo
Loo
и то что ты можешь сделать get::<u32, String> а за ним к той же базе get::<i64, u8>
Loo
неужели не видно что абсракции протекают?
Marat
не понял при чём тут это
У тебя есть одна база где ты хочешь хранить несколько разных типов, как ты ее несколько раз откроешь
Marat
Не выйдет так
Marat
Сделай обёртку над db
Vladimir
блин, база данных позволяет в каждой ячейке иметь разную пару (ключ, значения). Ты просишь поменять её семантику, на использование только для одной пары (ключ, значения)
Vladimir
биндинг тут не причем
Loo
Loo
это
Vladimir
Ну это имдб такой, биндинги не должны ломать интерфейс
Loo
в расте идиоматика накладывает определённые требования
Marat
Я не понимаю, что мешает то сделать обёртку которая будет с нужным интерфейсом?
Marat
И более того это правильно будет
Marat
Marat
Поверх нее можно построить абстракцию бд которая будет хранить только определенный тип
Marat
Можно даже её в либу предложить
Marat
Чтобы не каждый делал
Маjко
Ну дак и речь о том что API говно и могли бы сразу сделать нормальную идиоматичную обертку
Маjко
Это и есть абстракция, ну
Маjко
Это не голый *-sys биндинг с ансейфами
Loo
Так она правильная. Она разрешает тебе сделать бд которая хранит разные типы
на мой взгляд идиоматичный интерфейс это тот интерфейс который статически типизирован. да может в другом языке это ок было бы - но не тут. если говорить о гетерогенных структурах данных в качестве Value - то пример можно взять из serde_json::Value где это Enum и таким образом ты можешь чекать какой там тип. это тру вэй на мой взгляд который вписывается в концепцию языка. а то что они сделали - это сырая обёртка над сишкой которая не соответствует идиоматике
Marat
Ну я лично считаю что наоборот сделали правильно. Дали минимальную абстракцию и дали возможность строить поверх нее как надо. То есть было бы хуже, если бы дали только типизированный, который не позволяет нетипизированный базы
Vladimir
не, возможно они все-таки не правы что сделали возможность пихать туда любые ключи, а не просто "байты"
Нави
А легко строку в число преобразовать?
Числа целые, только из цифр строка систоит
Marat
Vladimir
Vladimir
https://doc.rust-lang.org/std/str/trait.FromStr.html
Marat
Хочешь типы, сам делаешь
Vladimir
да, просто я к тому, что интерфейс с определенным типом для бд, будет не эргономичный.
Vladimir
и к тому же не убирает возможность юзать вещи не правильно
Vladimir
т.е. еще хуже имхо
Loo
Vladimir
ну база эта не для того создана, еще раз. Ты нарушаешь семантику базы, в угоду какой-то выдуманной идиоматичности
Маjко
Давно ORM стал нарушением семантики базы?
Vladimir
Marat
т.е. еще хуже имхо
Вот да, типизированную абстракцию построить это очень легко впринципе
Маjко
ORM не так работает
ORM мапит байтики от базы в реальные типы. Типизированные get и put делают то же самое.
Где ты видишь нарушение семантики?
Vladimir
Vladimir
В KV ты можешь хранить что угодно, но это будет надстройка поверх
Vladimir
по умолчанию в KV нет никакого отношения
Vladimir
и структуры данных
Маjко
Блин, хранишь ты там в любом случае не байты, а структурированные данные
Маjко
Если ты не на ассемблере пишешь
Vladimir
Хранишь ты там байтики
Маjко
Нет
Vladimir
а то как ты их интерпретируешь это уже твоя абстракция
Маjко
Ты хранишь структурированные данные, представленные байтиками
Vladimir
еще раз, почитай, что такое реляционная бд, и посмотри почему KV онной не является
Маjко
Vladimir
молодец, тогда почему предлагаешь абстракции для реляционной натянуть на чистый KV?
Loo
Маjко
Указатели на голые данные и байтоебство -- это сишный подход и там он актуален.
Тут принято оперировать типизированными данными, по этому интерфейс, оперирующий байтами там, где очевидно идет обмен структурированными данными, не идиоматичен
Vladimir
Vladimir
Anonymous
Vladimir
Понятно, что когда ты пишешь в KV ты знаешь что за ТД ты пишешь. Но это не значит, что у твоей бд есть структура. Потому что KV существуют в том числе для динамики, когда человеку нужно разнородные структуры пихать и как-то хендлить forward compatibility.
Vladimir
Т.е. вернулись к тому с чего начали, абстракций поверх KV может быть много. Даже реляционную бд сверху можно натянуть ( в неком урезанном виде). Но не существует единственно верной идеологической абстракции.
Loo
Маjко
Vladimir
да что такое идиоматично
Vladimir
Линк мне как идиоматично
Маjко
Vladimir
Loo
Маjко
Hyper::header
По сети тоже шлется поток байт, знаешь ли)
Но тем не менее операции над хэдерами статически типизированы
Vladimir
https://prnt.sc/gl1nmn
единственная ссылка которая подходит описанию это ссылка на гитхаб? Это не та где собраны разные статьи, которые к создателям языка не имеют отношения?
Маjко
И был емнип репозиторий со сборником статей по idiomatic rust
Маjко
Loo
Маjко
Vladimir
может стоит перестать апеллировать к этому термину