let orig_len = buf.len(); let orig_buf = buf.to_vec();
// Add on extra bytes so we'll have sentinel bytes at the end that shouldn't get changed. for _ in0..(1000 + line_ending.len() * orig_len) {
buf.push(rng.gen());
}
let before_line_wrap = buf.to_vec();
let params = line_wrap_parameters(orig_len, line_len, line_ending.len());
let bytes_written = line_wrap::<L>(&mut buf[..], orig_len, line_len, line_ending);
// make sure line_wrap didn't touch anything beyond what it should
assert_eq!(before_line_wrap[params.total_len..], buf[params.total_len..]);
{ // also make sure that line wrapping will fit into a slice no bigger than what it should // need letmut buf_strict = before_line_wrap.to_vec();
buf_strict.truncate(orig_len); // fill in some fresh random garbage while buf_strict.len() < params.total_len {
buf_strict.push(rng.gen());
} let bytes_written_precise_fit = line_wrap::<L>(
&mut buf_strict,
orig_len,
line_len,
line_ending,
);
assert_eq!(params.total_len, buf_strict.len());
assert_eq!(bytes_written, bytes_written_precise_fit);
assert_eq!(&buf[0..(params.total_len)], &buf_strict[..]);
// since we have a copy of the wrapped bytes lying around, remove the endings and see // if we get the original for line_ending_num in0..params.lines_with_endings { let line_ending_offset = (line_ending_num + 1) * line_len;
for _ in0..line_ending.len() { let _ = buf_strict.remove(line_ending_offset);
}
}
assert_eq!(orig_buf, buf_strict);
}
buf.truncate(params.total_len);
bytes_written
}
Messung V0.5 in Prozent
¤ Dauer der Verarbeitung: 0.11 Sekunden
(vorverarbeitet am 2026-06-18)
¤
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.