Alex
Anonymous
Маjко
Anonymous
даже вещи типа Content-Length нужно задавать
Маjко
Anonymous
хм
Anonymous
а почему он в примере это делает?
Маjко
Хз
Luger
Berkus
хмм, а я правильно понимаю, что если мне надо воспользоваться BufRead то надо один раз заврапить в него и потом использовать только его? Вариант взять Read, завернуть в BufRread, использовать read_until и дропнуть BufRead, потом продолжить читать Read это плохая, негодная идея?
Loo
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
спс, нашел
でゲソ
как в ионе искать по истории команд?
でゲソ
короче ion охуенен - убил мне вход в систему что даже свежесозданый пользователь не может войти в систему
ne_on
linux? зайди через init=/bin/bash
Alex
Alex
заранее стоило озаботиться юзером со стандартным шелом и судо доступом
でゲソ
exa кстати тоже чет не собралась под убунту
でゲソ
он ее собирает
でゲソ
отваливается где-то на этапе сборки какого-то cmake
adam
в подобных случаях я всегда откатываюсь до runlevel 1
adam
замаунтишь систему в read-write и починишь свой passwd
でゲソ
так и сделал
Berkus
но то что в расте встроили тестирование прямо в карго это прекрасно - можно сразу без лишних телодвижений разобраться чо почем
պլհկ
into_inner сделай, в чем проблема?
Berkus
не совсем понял как это сделать
у меня есть внешний код который вызывает несколько операций чтения, как мне тут поможет into_inner?
Vladimir
Смотри, тут варианты решения могут быть разные, зависят от твоих нужд. В самой вершине твоего. Api у тебя есть какая-то абстракция, что она от пользователя просит, чтобы получить R:Read. Файл? Если так, то тогда просто сразу пакуешь файл в буфридер и работаешь с ним, зачем тебе владение над файлом?
Vladimir
Если на вершине требуется уже получить екземлпяр читателя, то нужно понять, нужно ли тебе владение (если обрабатываешь файл целиком, то да). Если обрабатываешь только часть файл, то нет. Если владение нужно, то просишь у юзера R: Read и пакуешь в BufReadet. Если не нужно, то просишь &mut R:BufRead+..
Vladimir
Никуда Read не пропадет, если ты запихнешь объект в BufReader. Т.к. BufReader реализует Read
Anton
Всем 👋
Berkus
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())?;
сейчас вот так нахуевертил
Anonymous
Berkus
это нормально, если buf не получится заполнить хоть чем-нибудь оно запаникует еще раньше
Berkus
https://github.com/berkus/carma/blob/rust/src/support/mod.rs#L77 пока в общем что-то такое
պլհկ
почему вы не используете CString?
Vladimir
@berkus да, для этого есть CStrng. Но если очень хочется буфер в векторе, то просто сделай pop()
պլհկ
CString::new(vec)
Berkus
Ок, а в обычный String оно конвертится или совместимо?
Vladimir
@berkus у них разные задачи. CString юзается там, где нужно создать сишную строку и потом её отдать в ситное API.
Vladimir
Если у тебя используется только Rust код, то зачем писать в C-String формате?
Vladimir
Храни в файле сразу. String например
պլհկ
у него сторонний формат
Berkus
Я читаю чужой бинарный формат
Berkus
Когда его писали раста даже в задумках не было)