Rust 函数如何返回一个不定长的字符串数组呢

发布于 2022-09-12 03:17:14 字数 576 浏览 26 评论 0

刚学习rust,中文站点比较少,突然有点为难,虚心求教。

pub fn arg_array(arg: String) -> 怎么声明这个返回值? {
    println!("入参=>{}", arg);
    let array = ["das", "das"];// 这里的array 是通过解析arg,长度不定
    return array
}

刚看到一个比较粗鄙的做法,求更加优雅点

pub fn arg_array(arg: String) -> Vec<&'static str> {
    println!("入参=>{}", arg);
    let array = ["das", "das","dsad"];
    println!("len =>{}",array.len());
    let mut vec = [];
    for i in 0..array.len(){
        vec.push(array[i])
    }
    return vec;
}

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

人生百味 2022-09-19 03:17:14

文档中已经说明,Rust中的数组是固定长度的,不允许改变长度,因此,你只能使用vector来替代。中文站点你可以参考rust中文文档
这里给你找到了一个优雅的写法:

fn parse_core_args(args: Vec<String>) -> (Vec<String>, Vec<String>) {
   let mut rest = vec![];
   // Filter out args that shouldn't be passed to V8
   let mut args: Vec<String> = args
       .into_iter()
       .filter(|arg| {
           if arg.as_str() == "--help" {
               rest.push(arg.clone());
               return false;
           }
           true
       })
       .collect();
   // Replace args being sent to V8
   for idx in 0..args.len() {
       if args[idx] == "--v8-options" {
           mem::swap(args.get_mut(idx).unwrap(), &mut String::from("--help"));
       }
   }
   (args, rest)
}

源码地址

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文