p
Size: a a a
p
ph
Э
Э
MB
MB
MB
Э
Э
В
Iterator<Item = String>
в String
заджойнив строки с разделителем?r
Э
Iterator<Item = String>
в String
заджойнив строки с разделителем?.collect
для данного итератора. Если высокая, то просто:Э
r
Iterator<Item = String>
в String
заджойнив строки с разделителем?В
В
r
if let Some(mut first) = iter.next() { for s in iter { first.push_str(separator); first.push_str(s); } first } else { String::new() }
Э
let size = {
let (low, high) = iter.size_hint();
let s = if let Some(size) = high {
size
} else {
cmp::max(low,MEDIUM_ITERATOR_SIZE)
};
s * (UPPER_MEDIUM_STRING_SIZE + SPLITTER_SIZE)
};
let mut buffer = String::with_capacity(size);
iter.for_each(|s| {
buffer.push_str(s.as_str);
});
Э
&str.len()
или char.encode_utf8().len()
, если чар, а не строка. А вот две другие цифры просто так не получить. ITERATOR_SIZE можно получить, если iter: ExactSizeIterator, а вот среднюю длину строки намного сложнее получить.В
.iter().join(",").as_str()