如何比较数组和向量的一部分?

Ala*_*ano 4 rust

我有一个数组和向量,矢量填充在一个循环中.在循环的每次迭代中,我想检查向量的最后4个元素是否等于数组的4个元素.数组的大小为4.

有没有比一个一个地比较它们的元素更好的方法呢?我喜欢类似的东西my_array == my_vector[4, -4]

mal*_*rbo 11

有没有比一个一个地比较它们的元素更好的方法呢?

是的,你可以比较与向量的片阵列的:

fn main() {
    let a = [3, 4, 5, 6];
    let v = vec![0, 1, 2, 3, 4, 5, 6];
    assert_eq!(&a[..], &v[v.len() - 4..]);
}
Run Code Online (Sandbox Code Playgroud)

可以使用任何范围形式创建切片.以下是创建切片的一些示例:

fn main() {
    let v = vec![0, 1, 2, 3, 4, 5, 6];

    // indexes 0, 1, 2 (3 not included)
    assert_eq!(&[0, 1, 2], &v[..3]);

    // indexes 2, 3 (4 not included)
    assert_eq!(&[2, 3], &v[2..4]);

    // indexes 3, 4, ..until the last
    assert_eq!(&[3, 4, 5, 6], &v[3..]);

    // all indexes
    assert_eq!(&[0, 1, 2, 3, 4, 5, 6], &v[..]);
}
Run Code Online (Sandbox Code Playgroud)