gpt4 book ai didi

rust - 从字符迭代器添加路径组件而不先收集它的惯用方式是什么?

转载 作者:行者123 更新时间:2023-12-03 11:45:33 27 4
gpt4 key购买 nike

例如。:

// just an example, can be any Iterator<Item = char>
let iter = "hello".chars();

let mut path = std::path::PathBuf::new();

// works but is inefficient
path.push(iter.collect::<String>());

// does not work:
// path.push(iter);
// if path were String we could do
// path.extend(iter)
println!("{:?}", path);

最佳答案

从任意字符的迭代器转换为PathBuf的最佳方法是先将迭代器收集到String中:

let path_buf = PathBuf::from(iter.collect::<String>());
虽然从字面上看这并不能避免先收集迭代器,但是在创建 String时,它只会分配一次内存。如 documentation中所述,此内存已被PathBuf重用:

Converts a String into a PathBuf

This conversion does not allocate or copy memory.

关于rust - 从字符迭代器添加路径组件而不先收集它的惯用方式是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61886478/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com