Маjко
его не надо делать на hyper
Почему? Я делал, брат жив. Если обмазаться макросами, даже сносно
Anonymous
даже вещи типа Content-Length нужно задавать
Anonymous
хм
Anonymous
а почему он в примере это делает?
Маjко
Хз
Berkus
хмм, а я правильно понимаю, что если мне надо воспользоваться BufRead то надо один раз заврапить в него и потом использовать только его? Вариант взять Read, завернуть в BufRread, использовать read_until и дропнуть BufRead, потом продолжить читать Read это плохая, негодная идея?
Loo
https://doc.rust-lang.org/std/io/struct.BufReader.html#method.new
Loo
она не то что негодная, просто невыполнима)
պլհկ
Там есть инто_иннер
Loo
ещё есть get_ref
Loo
в любом случае сначала дропнув буфридер - потом уже никак не получишь ридер естесно
Berkus
окей, описываю идею: - у меня в интерфейсах io указан просто Read или ReadBytesExt как трейт - read_c_string() внутри себя создает BufRead просто для того чтобы работал read_until - при выходе мне надо его дропнуть, чтобы оригинальный Read остался жив и не пожрал все лишние символы сверх того что я считал в read_c_string выполнимо как-то?
Berkus
чо то типа https://github.com/berkus/carma/blob/rust/src/support/mod.rs#L77
պլհկ
он уже пожрал
Vladimir
@berkus нет, тебе сразу нужно просить в этой функции BufReader
Berkus
ага, понятно
Vladimir
@berkus точнее R:BufRead кстати в твоем случае даже промежуточный BufReader не нужен будет, так как курсор уже реализует всё что нужно.
Berkus
да, я BufRead ему указал
Berkus
разберусь сейчас только как с byteorder::ReadBytexExt это миксовать
Vladimir
а что там миксовать, всё что реализует BufReader реализует и Read ( pub trait BufRead: Read ), а значит и реализует ReadBytexExt ( impl<R: Read + ?Sized> ReadBytesExt for R )
Berkus
гут, но я не могу ссылаться только на ReadBytesExt в коде который вызывает И read_iXX и одновременно с этим read_c_string()
Berkus
то есть мне нужен R: ReadBytesExt + BufRead или что-то такое
でゲソ
кто-нибудь пробовал запускать redox в виртуалке?
Kerrigan
у тебя не работает?
でゲソ
он при какой-то настройке прошел вроде на третий этап загрузки, но вот фиг знает, оно зависло или таки грузится
でゲソ
какие настройки вообще для него надо
պլհկ
Когда загрузится гуй будет
でゲソ
00:00:15.146293 GUI: UIFrameBufferPrivate::handleNotifyChange: Size=800x600 00:00:15.146469 GUI: UIFrameBufferPrivate::performResize: Size=800x600, Directly using source bitmap content
でゲソ
вот хрен знает , это вм пишет или уже система
ivan
(не закидайте камнями) какой сейчас актуальный чатик по cpp/Qt? есть к ним один очень концептуальный вопрос.
Anonymous
procxx
ivan
спс, нашел
Vladimir
то есть мне нужен R: ReadBytesExt + BufRead или что-то такое
Да, общая часть должна быть такой, или можешь просить Read и сам заворачивать в BufReader
でゲソ
как в ионе искать по истории команд?
でゲソ
короче ion охуенен - убил мне вход в систему что даже свежесозданый пользователь не может войти в систему
ne_on
linux? зайди через init=/bin/bash
Alex
заранее стоило озаботиться юзером со стандартным шелом и судо доступом
でゲソ
а чо в лине нельзя ставить shell per user?
Можно. Но попытки восстановить шелл не увенчались успехом. Последняя надежда пофиксить порядок настроек в etc/passwd
でゲソ
linux? зайди через init=/bin/bash
как провернуть на убунте с виртуалки?
Маjко
как провернуть на убунте с виртуалки?
Добавить в параметры ядра при загрузке
Alex
как провернуть на убунте с виртуалки?
если груб то когда выбираешь ОС, жмешь TAB
でゲソ
exa кстати тоже чет не собралась под убунту
でゲソ
он ее собирает
でゲソ
отваливается где-то на этапе сборки какого-то cmake
adam
в подобных случаях я всегда откатываюсь до runlevel 1
adam
замаунтишь систему в read-write и починишь свой passwd
でゲソ
так и сделал
Berkus
Да, общая часть должна быть такой, или можешь просить Read и сам заворачивать в BufReader
ну так и было, но bufreader сжирает владение и я остаюсь без read, так что видимо все таки менять интерфейсы
Berkus
но то что в расте встроили тестирование прямо в карго это прекрасно - можно сразу без лишних телодвижений разобраться чо почем
պլհկ
into_inner сделай, в чем проблема?
Berkus
не совсем понял как это сделать у меня есть внешний код который вызывает несколько операций чтения, как мне тут поможет into_inner?
Vladimir
Смотри, тут варианты решения могут быть разные, зависят от твоих нужд. В самой вершине твоего. Api у тебя есть какая-то абстракция, что она от пользователя просит, чтобы получить R:Read. Файл? Если так, то тогда просто сразу пакуешь файл в буфридер и работаешь с ним, зачем тебе владение над файлом?
Vladimir
Если на вершине требуется уже получить екземлпяр читателя, то нужно понять, нужно ли тебе владение (если обрабатываешь файл целиком, то да). Если обрабатываешь только часть файл, то нет. Если владение нужно, то просишь у юзера R: Read и пакуешь в BufReadet. Если не нужно, то просишь &mut R:BufRead+..
Vladimir
Никуда Read не пропадет, если ты запихнешь объект в BufReader. Т.к. BufReader реализует Read
Anton
Всем 👋
Berkus
еще вопрос есть у меня let mut buf = vec![]; мне надо от него отрезать завершающий 0 после чтения, как это сделать удобнее-эффективнее - слайсить и потом to_vec или сначала в String конвертнуть и потом trim_from_right() какой-нибудь (но он вернет слайс и его опять надо будет в String превращать)
Anonymous
после конвертации это будет медленнее
Berkus
let s = String::from_utf8(buf[..buf.len()-1].to_vec())?; сейчас вот так нахуевертил
Berkus
это нормально, если buf не получится заполнить хоть чем-нибудь оно запаникует еще раньше
Berkus
https://github.com/berkus/carma/blob/rust/src/support/mod.rs#L77 пока в общем что-то такое
պլհկ
почему вы не используете CString?
Vladimir
@berkus да, для этого есть CStrng. Но если очень хочется буфер в векторе, то просто сделай pop()
Berkus
почему вы не используете CString?
Даже не знаю, возможно потому что read_until с ним не работает а использует Vec.
պլհկ
CString::new(vec)
Berkus
Ок, а в обычный String оно конвертится или совместимо?
Vladimir
@berkus у них разные задачи. CString юзается там, где нужно создать сишную строку и потом её отдать в ситное API.
Vladimir
Если у тебя используется только Rust код, то зачем писать в C-String формате?
Vladimir
Храни в файле сразу. String например
պլհկ
у него сторонний формат
Berkus
Я читаю чужой бинарный формат
Berkus
Когда его писали раста даже в задумках не было)