切片的减去操作

时间:2015-04-03 06:53:47

标签: rust slice pointer-arithmetic

如何使用以下代码:

let arr: [u8; 3] = [1, 2, 3];
let x1: &[u8] = &arr[0..];
let x2: &[u8] = &arr[1..];
let d: isize = x2 - x1;

我在一个向量中有两个切片,我想知道它们的起始指针之间的区别(在该示例中应该是1)。

1 个答案:

答案 0 :(得分:1)

其中一种方法是将指向切片内容的指针转换为isize,并对这些值进行算术处理:

let arr: [u8; 3] = [1, 2, 3];
let x1: &[u8] = &arr[0..];
let x2: &[u8] = &arr[1..];
let d: isize = x2.as_ptr() as isize - x1.as_ptr() as isize;
println!("{}", d);

但我不确定如果地址不适合isize,这将如何运作。