首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >将多个参数传递给ends_with函数

将多个参数传递给ends_with函数
EN

Stack Overflow用户
提问于 2022-09-02 07:13:12
回答 2查看 48关注 0票数 0

我能做到这一点没有任何问题:

代码语言:javascript
运行
复制
"hello".ends_with("o"); //true

但是,我想将这一行的末尾与几个变体进行比较:

代码语言:javascript
运行
复制
let endings = vec!["o", "a"];

fn check_str(s: &str, e: Vec<&str>) -> bool {
    s.ends_with(e)
}

check_str("some...", endings); //true or false

在不使用for迭代数组或向量的情况下,可以做到这一点吗?

EN

Stack Overflow用户

回答已采纳

发布于 2022-09-02 07:23:34

可以做到这一点,而不需要迭代数组或向量的for?

视情况而定。

如果您只是在寻找单个字符,那么是的:str::ends_with的签名是

代码语言:javascript
运行
复制
pub fn ends_with<'a, P>(&'a self, pat: P) -> bool where
    P: Pattern<'a>,
    <P as Pattern<'a>>::Searcher: ReverseSearcher<'a>, 

这意味着实现Pattern的任何东西都能工作。Pattern是一个不稳定的API,因此您只能得到标准库实现的内容,即:

包含在string

  • Fn(char) -> bool ->函数中的任何形式的->单子字符串

  • char ->的
  • 字符串返回char ->的真正
  • 片段(任何字符

)

最后一个是你的"in":

代码语言:javascript
运行
复制
fn main() {
    let endings = vec!['o', 'a'];
    for s in &["some...", "strings", "ends", "with", "carbonara"] {
        dbg!(s.ends_with(endings.as_slice()));
    }
}

如果您需要更复杂的东西(例如,多个实际子字符串),那么迭代是您唯一的选择。

但这并不意味着你有

使用for对数组或向量进行迭代?

铁锈对迭代器有很好的支持,所以您可以编写如下内容:

代码语言:javascript
运行
复制
endings.iter().any(|n| s.ends_with(*n))

这将返回真/假,这取决于s,以endings的任何值结尾。

票数 2
EN
查看全部 2 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73579025

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档