#search-path #source #selector #wildcard #element #self #engine

syn-select

轻量级 Rust 源代码搜索选择器

8 个版本

0.3.0 2023 年 5 月 22 日
0.2.1 2022 年 6 月 16 日
0.2.0 2019 年 8 月 23 日
0.1.4 2019 年 2 月 11 日
0.1.2 2019 年 1 月 30 日

#243数据库实现

Download history 8571/week @ 2024-04-20 8171/week @ 2024-04-27 8838/week @ 2024-05-04 9177/week @ 2024-05-11 11064/week @ 2024-05-18 9750/week @ 2024-05-25 11809/week @ 2024-06-01 11272/week @ 2024-06-08 8829/week @ 2024-06-15 8317/week @ 2024-06-22 7680/week @ 2024-06-29 9554/week @ 2024-07-06 9863/week @ 2024-07-13 9649/week @ 2024-07-20 10125/week @ 2024-07-27 11143/week @ 2024-08-03

42,179 每月下载量
用于 8 Crates (4 个直接使用)

MIT 许可证

24KB
559

syn-select

Build Status Latest Version Documentation

轻量级 Rust 代码路径选择器。

mod a {
    mod b {
        trait C {
            fn d(self) {}

            fn f() {}
        }
    }
}

fn main() {
    let src_file = syn::parse_str(include_str!("./rs")).unwrap();

    // This will print out the trait `C`, limited to only function `d`.
    dbg!(syn_select::select("a::b::C::d", &src_file).unwrap());
}

通配符

在通配符中使用 _ 作为路径段将匹配该位置的任何元素。例如,在以下

mod imp {
    struct H;
}

mod imp2 {
    struct H;
}

选择器 _::H 将匹配名为 H 的所有结构。


lib.rs:

通过路径在 Rust 代码中获取特定元素的库。

用法

let file: syn::File = syn::parse_str(
    r#"
    mod a {
        mod b {
            trait C {
                fn d(self) {}
                fn f() {}
            }
        }
    }"#).unwrap();
let results = syn_select::select("a::b::C::d", &file).unwrap();
assert_eq!(results.len(), 1);

依赖项

~265–690KB
~17K SLoC