2个版本

使用旧的Rust 2015

0.1.1 2016年7月23日
0.1.0 2016年7月23日

#15 in #ngrams

Download history • Rust 包仓库 177/week @ 2024-03-03 • Rust 包仓库 148/week @ 2024-03-10 • Rust 包仓库 221/week @ 2024-03-17 • Rust 包仓库 197/week @ 2024-03-24 • Rust 包仓库 338/week @ 2024-03-31 • Rust 包仓库 119/week @ 2024-04-07 • Rust 包仓库 184/week @ 2024-04-14 • Rust 包仓库 314/week @ 2024-04-21 • Rust 包仓库 272/week @ 2024-04-28 • Rust 包仓库 167/week @ 2024-05-05 • Rust 包仓库 192/week @ 2024-05-12 • Rust 包仓库 203/week @ 2024-05-19 • Rust 包仓库 198/week @ 2024-05-26 • Rust 包仓库 170/week @ 2024-06-02 • Rust 包仓库 236/week @ 2024-06-09 • Rust 包仓库 597/week @ 2024-06-16 • Rust 包仓库

1,234 每月下载量
3 个crate中使用 (通过 gaoya)

MIT 协议

15KB
278

shingles.rs

License

Shingles在rust中的实现

查看文档 (0.1 / master)

概述

Shingles 是一个用于从切片和utf-8字符串构造shingles ("标记化") 的crate。它最初是为了在minhash或类似模糊匹配算法中使用而创建的。

示例

extern crate shingles;

use shingles::AsShingles;

fn main() {
    let v = [1, 2, 3, 4];
    let mut num_sh = v.as_shingles(3);
    let mut str_sh = "привет!".as_shingles_with_step(4, 2);
    
    assert_eq!(Some(&v[0..3]), num_sh.next());
    assert_eq!(Some(&v[1..4]), num_sh.next());
    
    assert_eq!(Some("прив"), str_sh.next());
    assert_eq!(Some("ивет"), str_sh.next());
    
    for h in "привет!".as_shingles(4).hashes() {
        // prints hash for each shingle
        println!("{}", h);
    }
}

2D shingle示例

extern crate shingles;

use shingles::AsShingles2D;

fn main() {
    let v: Vec<_> = "abcd\n\
                     efgh\n\
                     ijkl"
        .split_terminator("\n")
        .collect();

    let mut sh_2d = v.as_shingles_2d([3, 3]);

    assert_eq!(
        Some(vec![&v[0][0..3], &v[1][0..3], &v[2][0..3]]),
        sh_2d.next()
    );

    // You can easily get hashes from 2D-shingles
    for h in v.as_shingles_2d([3, 3]).hashes() {
        // print u64 hash value for each 2D-shingle
        println!("{}", h);
    }
}

无运行时依赖