mastodon.cardina1.red は、数々の独立したMastodonサーバーのうちのひとつです。サーバーに登録してFediverseのコミュニティに加わってみませんか。

サーバーの情報

3
人のアクティブユーザー

Rust で lossy な変換が発生する可能性のある UTF-8 文字列のデコードって unsafe 使わずオーバーヘッド出さずできない気がする.見落としてる方法あるのかな

String::from_utf8(v).unwrap_or_else(|e| String::from_utf8_lossy(e.as_bytes()).into_owned())

だと UTF-8 のバリデーションが二重になる(まあオーバーヘッドは塵みたいなもんだけど)

@Linda_pp String::from_utf8_lossy(e.as_bytes()).into_owned() だけで済ませば String が得られるので String::from_utf8(v).unwrap_or_else() 部分は全く不要に見えるのですが……

@lo48576 あーすみません,書いてなかったですが結果として String が欲しいんです.入力の Vec<u8> を極力再利用したいです

らりお・ザ・何らかの🈗然㊌ソムリエ

@Linda_pp あっ、入力が v: Vec<u8> なのを見落としていました。なるほど……
現状だと先に from_utf8_lossy() したうえで Cow::Borrowed だったら unsafe { String::from_utf8_unchecked() } でどうにかする、みたいなのしかオーバーヘッドなしにする方法は思い付きませんね。この程度のことに unsafe したいかというと相当怪しいですが。

@lo48576 ですです.すみません,肝心な部分書き忘れてました…