Stanislav
При использовании JSON возможно, используется парсинг строк, со всеми проверками. А тут максимальная скорость, прямое отображение данных на POD-структуру.
я не говорю что прям структуру хочу считать, хочу считать 2 байта, стд предлагает мне массив считывать и потом что то делать с ним
Судзумия
Внезапно,но файл состоит из массива байтов
Маjко
1) там вроде есть в трейте Read функция read_exact, которая считает 2 байта. 2) как и в си воспользоваться битовой магией чтобы засунуть байты в численный тип Если это не число а строка, то сделать String::from_urf8() и обработать возможную ошибку. Всё это в Safe Rust
Судзумия
🤔
Маjко
что за MIR ?
Внутреннее представление компилятора
Маjко
Одно из
Anonymous
http://play.integer32.com/?gist=5ff4f03550c04d0c9734d331795de5ea&version=stable
IF лучше перенести после присваивания
Маjко
Не пони
Anonymous
*value += if ... {} else ... {}
Маjко
При всей моей любви к таким конструкциям
Маjко
Тут оно выглядит абсолютно нечитаемо
Маjко
Anonymous
rustfmt по другому расположит
Маjко
Ну лучше не становится
Anonymous
хм
Маjко
имхо конечно
Маjко
Первый вариант как-то понагляднее
Маjко
Пусть и строк больше занимает
Stanislav
Внутреннее представление компилятора
перед конвертацией в llvm ir ?
Anonymous
мб *value += if n & 1 == 1 { a0 } else { a1 };
Stanislav
а, спасиб, по первой пикче уже все ясно)
Max
Как синхронно получить body в hyper? Есть: let response = client.request(req).wait()?; А что дальше? По докам ничего не понятно
Stanislav
по мне так wait вполне синхронно выглядит, тормозит поток пока не получит
Max
Да, а как получить body то?
Max
(из https://docs.rs/hyper/0.11.1/hyper/struct.Response.html)
Max
https://docs.rs/hyper/0.11.1/hyper/client/struct.Client.html#method.request
Anonymous
ну так wait выдает Result
Anonymous
его нужно паттерн матчить
Max
Да, там ? решает
Anonymous
лол оно массив с байтами выдает что ли
Max
Просто body в байтах\String
Маjко
А вообще если тебе нужно синхронно возьми reqwest
Max
ТОчно (забыл о нем)
Маjко
с гипером очень много сейчас сношения из-за tokio когда нужно просто синхронно данные получить
Маjко
А там просто: там Responce реализует Read, который надо заюзать, и дальше использовать функции трейта Read
Anonymous
есть метод body()
Anonymous
но он тоже future
Anonymous
потому что контент не обязательно загрузился вместе с заголовками
Anonymous
let response = client.request(req).wait()?.body().wait()?;
Маjко
Вот теперь гипер реально слишком низкоуровневый, чтобы им комфортно пользоваться)
Маjко
Кишки торчат во все стороны
Anonymous
да вроде ок
Маjко
Покажи ньюкамеру как сделать get запрос самой популярной http-либой раста — он тебя вместе с растом нахер пошлет и будет прав
Anonymous
там есть пример в examples
Маjко
Принудительная асинхронность в таком виде это как-то очень больно)
Anonymous
ну я хз насколько хорошо принуждать использовать токио
Stanislav
в qt http клиент полностью асинхронный, дал мне как то боли
Маjко
смотря откуд ньюкамер :)
Даже в си с libcurl это процесс выглядит менее болезненно.
Stanislav
в синхронный режим вообще не умеет
Маjко
в qt http клиент полностью асинхронный, дал мне как то боли
Да, кстати, это тоже больно было первый раз
Маjко
А на второй я просто послал Qt куда подальше
Stanislav
а я наловчился им пользоваться :)
Anonymous
я один тут на cpp не пишу что ли
Max
я тож
Stanislav
@mersinvald я там даже в неочевидную багофичу влепился
Stanislav
впервые словил ошибку из за фргаментации памяти
Маjко
Пока не завезли async await это мало пригодно для удобной и счастливой разработки) С токио очень много сношения, возни с типами и километровыми ошибками цепочек. Производительность мне нравится, писать терпимо, но все таки хочется как у белых людей с асинками авейтами.
Маjко
Это как?
Маjко
виртуальная память жи видна процессу как непрерывный чанк.
Stanislav
???
по умолчанию qt http клиент тянет весь контент в один буфер не лимитированного размера
Маjко
мило
Stanislav
но спустя какое то время он не может выделить не прерывно 400 мб памяти
Stanislav
и падает
Маjко
Боже)
Stanislav
это как раз случалось ближе к вечеру
Маjко
как решил?
Anonymous
лол можно макрокомандами сделать
Stanislav
как решил?
там опция оказалось лимитировать буфер ) правда все чтение пришлось переделать
Stanislav
по 10 мб на файл сделал и ок
Маjко
https://github.com/rust-lang/rfcs/blob/master/text/2033-experimental-coroutines.md
Stanislav
в С++ корутиы уже можно щупать кстати
Маjко
лол можно макрокомандами сделать
Не совсем, в RFC описано, там довольно серьезно нужно компилятор моддить
Anonymous
ну если не привязывать к отдельной либе