【问题标题】:Minus operation for slices切片的减法运算
【发布时间】:2015-04-03 06:53:46
【问题描述】:

如何使以下代码工作:

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

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

【问题讨论】:

    标签: rust slice pointer-arithmetic


    【解决方案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,这将如何工作。

    【讨论】:

    • 如果地址不适合isize => 你的意思是,如果地址适合usize 但不适合isize?在这种情况下,您可以改为转换为 usize,尽管在没有下溢的情况下获得差异会稍微复杂一些。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-18
    • 2011-03-26
    • 1970-01-01
    • 2021-11-07
    • 1970-01-01
    相关资源
    最近更新 更多