Size: a a a

2021 May 05

EG

Emmanuel Goldstein in rust_offtopic
Сейчас строковые литералы порождают толстые указатели
Хотя можно было бы информацию о размере закодировать в типе вместо этого, как это сделано с байтовыми литералами
источник

EG

Emmanuel Goldstein in rust_offtopic
Вторая — lib.rs/camino
источник

TK

Traveller Kolsky in rust_offtopic
Хорошо, со вторым не поспоришь, было бы прекрасно, но что есть, то неплохо. Для первого - хранить байтовый массив и на него по необходимости делать str::from_utf8.
источник

EG

Emmanuel Goldstein in rust_offtopic
Нет, так ещё хуже, потому что ты будешь вызывать рантаймовую проверку много раз
источник

TK

Traveller Kolsky in rust_offtopic
_unchecked
источник

EG

Emmanuel Goldstein in rust_offtopic
Алсо, есть довольно много всяких крейтов, которые предоставляют кастомные слайсы байт (bytes, secstr), и они тоже могли бы почти-бесплатно получить UTF-8 версию.
источник

EG

Emmanuel Goldstein in rust_offtopic
Мне всегда казалось странным, что довольно произвольный, в сущности, инвариант, вынесен ажно на уровень примитивного типа
источник

TK

Traveller Kolsky in rust_offtopic
Типа работу со строками фикс размера унифицировать можно только толстыми указателями, если не указывать размер в качестве параметра (конст дженерики на 1.51).
источник

TK

Traveller Kolsky in rust_offtopic
Думаю, решения в дизайне принимались задооооолго до того, как появилась возможность придумать что-то получше
источник

EG

Emmanuel Goldstein in rust_offtopic
Конст дженерики тут не нужны, хватило бы массивов
источник

EG

Emmanuel Goldstein in rust_offtopic
Я же не предлагаю Str<const N>, я предлагаю Utf8<[u8; N]>
источник

EG

Emmanuel Goldstein in rust_offtopic
Массивы это древняя фича
источник

EG

Emmanuel Goldstein in rust_offtopic
И они ~всегда умели коэрситься к толстому указателю, а вот чтобы сделать наоборот нужны завтипы
источник

TK

Traveller Kolsky in rust_offtopic
Ну это довольно ограничено в применении
источник

TK

Traveller Kolsky in rust_offtopic
Покрывается сказанным выше
источник

EG

Emmanuel Goldstein in rust_offtopic
Ну а для остальных применений — обычный толстый указатель &Utf8<[u8]>
источник

Т8

Т-34 85 in rust_offtopic
это как?
источник

Т8

Т-34 85 in rust_offtopic
ну так поэтому в си-подобных языках сигнатура вообще без ключевого слова
источник

П

Пух in rust_offtopic
А как же func
источник

С

Слава in rust_offtopic
Причем здесь Windows. У неё запись-чтение идёт обычными байтами, там нет кодировки в принципе
источник