でゲソ
в расте файл ручками закрывать не нужно?
Anonymous
неа
Anonymous
is_some + unwrap это ужасно
Anonymous
нахуй тебе if let дали?
Anonymous
в расте файл ручками закрывать не нужно?
он закрывается на деструкторе
Berkus
でゲソ
он закрывается на деструкторе
а деструктор отрабатывает при выходе из скоупа, так?
Anonymous
да
Anonymous
или std::mem::drop
Berkus
if let Some(ext) = newext { newpath.set_extension(ext); } идиоматически?
Anonymous
да
Berkus
кул, спасибо
պլհկ
պլհկ
(Извините)
Loo
вахахаха
でゲソ
мде. два дня на две функции и тесты к ним чтобы просто открыть файл
Berkus
ну норм
でゲソ
в итоге тест чтения из файла успешно выполнился всего раз -_-
Misha
Привет, я почти не разбираюсь в Расте. Мне нужен доступ к символам строки по индексу, но я не могу кастануть &str в Vec<char>. Что делать?
Berkus
у строки есть char_indices()
Berkus
строка же в utf8, там разной длины codepoints
Misha
Так не итератор же, а именно по индексу.
Crazy
Хм а сделать mystr.chars() .collect::<Vec<_>>() ?
Alex
Так не итератор же, а именно по индексу.
а что ты хочешь получить по индексу? один байт или str?
Alex
char?
тебе еще раз говорят что в расте строки - utf-8 где один символ может иметь два байта
Alex
или более (вроде)
Crazy
Это идиоматично?
Ну вот с этим не уверен но способа лучше я по крайней мере не знаю
Alex
ты скажи какую задачу ты решаешь
Alex
char это один байт
Alex
тебе надо строку в массив байт превратить?
Misha
или более (вроде)
Vec<u32> есть ещё.
Alex
Vec<u32> есть ещё.
ты какую задачу решаешь?
Crazy
Vec<u32> есть ещё.
char же только в u8 кастовать можно, не?
Misha
ты какую задачу решаешь?
Нужен рандомный доступ к любому из чаров строки. По индексу.
Alex
у тебя там нет чаров
Alex
это тебе не C
分解物質
Нужен рандомный доступ к любому из чаров строки. По индексу.
чуть выше есть пример кода как &str декодировать в Vec<char>
Misha
у тебя там нет чаров
Блин, ну так любой чар умещается в u32.
Alex
как нет
char он один байт не?
Anonymous
где
Alex
в сях
分解物質
char он один байт не?
в C — да в Rust — нет
Anonymous
sizeof(char) = 1
Alex
Хм а сделать mystr.chars() .collect::<Vec<_>>() ?
Anonymous
char же только в u8 кастовать можно, не?
u8 max value: 255 unicode scalar max value: 65535
Anonymous
Vec<u16> подходит больше всего как я понял
Alex
> unicode scalar max value: 65535 А эмоджи?
Alex
они вроде utf-8 вполне себе.
Crazy
u8 max value: 255 unicode scalar max value: 65535
Да ты прав В u16/u32 Тоже кастуется
Anonymous
а как оно может не кастоваться?
Anonymous
а
分解物質
и к char в std есть куча функций для операций на unicode символами. тоесть если нужно оперировать над декодированными unicode строками то лучше взять Vec<char>
Anonymous
то есть 0x0 ... 0x10FFFF?
Anonymous
и у char один лишний бит?
分解物質
хз
Anonymous
какой-то треш
分解物質
Anonymous
ну если в юникоде максимум 21 бит используется
Anonymous
то зачем 32?
Alex
то зачем 32?
потому что эмоджи четырехбайтные?
Oleg
ну если в юникоде максимум 21 бит используется
21 бит в u16 не умещается, а в u32 умещается. Среднего не дано :)
分解物質
то зачем 32?
потому-что минимальная адресуемая единица памяти — байт. округлили в верх
Oleg
24 бита тоже округление вверх
Процессор не работает с 3-байтовыми числами :)
Alex
тут как обычно в железо упирается
Oleg
x86 я имею ввиду