當前位置: 首頁>>代碼示例 >>用法及示例精選 >>正文


Rust pointer.align_offset用法及代碼示例


本文簡要介紹rust語言中 pointer.align_offset 的用法。

用法

pub fn align_offset(self, align: usize) -> usize

計算需要應用於指針以使其與 align 對齊的偏移量。

如果無法對齊指針,則執行返回usize::MAX。允許實施總是返回usize::MAX。隻有算法的性能取決於在這裏獲得可用的偏移量,而不是其正確性。

偏移量以T 元素的數量表示,而不是字節數。返回的值可以與wrapping_add 方法一起使用。

無法保證偏移指針不會溢出或超出指針指向的分配。由調用者確保返回的偏移量在除對齊之外的所有方麵都是正確的。

Panics

如果 align 不是 power-of-two,則函數會發生Panics。

例子

u16 訪問相鄰的u8

let x = [5u8, 6u8, 7u8, 8u8, 9u8];
let ptr = x.as_ptr().add(n) as *const u8;
let offset = ptr.align_offset(align_of::<u16>());
if offset < x.len() - n - 1 {
    let u16_ptr = ptr.add(offset) as *const u16;
    assert_ne!(*u16_ptr, 500);
} else {
    // while the pointer can be aligned via `offset`, it would point
    // outside the allocation
}

相關用法


注:本文由純淨天空篩選整理自rust-lang.org大神的英文原創作品 pointer.align_offset。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。