为什么当传递正确匹配的文件扩展名时 Path.ends_with 返回 false ?

neu*_*net 3 rust

为什么这段代码返回 false

use std::path::Path;
fn main() {
    println!(
        "Ends with? {:?}",
        &Path::new("some.file.d.ts").ends_with("ts")
    );
}
Run Code Online (Sandbox Code Playgroud)

游乐场链接

Cha*_*ffy 5

文档对此有明确说明:

判断是否child是 的后缀self

只考虑整个路径组件来匹配

像这样的扩展ts不是整个路径组件。


所以,它是真的的情况会是这样的:

use std::path::Path;
fn main() {
    println!(
        "Ends with? {:?}",
        &Path::new("/path/to/some.file.d.ts").ends_with("some.file.d.ts")
    );
}
Run Code Online (Sandbox Code Playgroud)

  • https://doc.rust-lang.org/std/path/struct.Path.html#method.extension (3认同)
  • @neuronet,需要明确的是,您的问题_不问_如何更改代码以比较文件扩展名。您的问题询问为什么您的原始代码无法测试扩展,而这正是此答案所解决的问题。如果您想要不同的答案,您应该问不同的问题。 (3认同)