Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
1.6k views
in Technique[技术] by (71.8m points)

rust - Split a string and return Vec<String>

I want to split a string and return Vec<String> from my function. It has to be Vec<String> and not Vec<&str> because I can't return Vec<&str>, can I? If I can, though, how can I do that?

let var1: Vec<&str> = my_string.split("something").collect();
let res = var1.iter().map(|x| x.to_string());
// I want to return Vec<String>

I've tried different versions but gotten error: mismatched types and other kinds of similar errors. Is there an easier way?

See Question&Answers more detail:os

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Reply

0 votes
by (71.8m points)

You don't need to create an intermediate Vec<&str>, just map to_string() and use collect() after that:

let res: Vec<String> = my_string.split("something").map(|s| s.to_string()).collect();

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
OGeek|极客中国-欢迎来到极客的世界,一个免费开放的程序员编程交流平台!开放,进步,分享!让技术改变生活,让极客改变未来! Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

...