我可以在[&'static str; N]转换为&[&str]而不创建多个临时值?

时间:2018-10-30 19:23:24

标签: rust

给出数组:

static STRS_UPPER: [&'static str; 3] = ["FOO", "BAR", "BAZ"];

将上述数组的映射表示形式(例如,使所有字符串都变为小写)传递给具有签名的函数的简洁方式是什么:

fn print_str_slice(slice: &[&str]);

以上类型参数是固定的。我无法更改print_str_slice的签名或STRS_UPPER的类型。

我目前正在做什么:

let strings_lower = STRS_UPPER.iter()
    .map(|s| s.to_string().to_ascii_lowercase())
    .collect::<Vec<_>>();

print_str_slice(strings_lower.iter()
    .map(AsRef::as_ref)
    .collect::<Vec<_>>()
    .as_slice()
);

是否可以以更简洁的方式完成此操作,也许不需要中介向量strings_lower

0 个答案:

没有答案