#raw-pointers #pointers #raw #no-std

no-std rawpointer

为原始指针和 NonNull<T> 提供额外的方法。例如 .post_inc().pre_dec()(参看 ptr++--ptr),offsetadd 用于 NonNull<T>,以及函数 ptrdistance

3 个不稳定版本

使用旧的 Rust 2015

0.2.1 2019 年 9 月 12 日
0.2.0 2019 年 9 月 8 日
0.1.0 2016 年 12 月 15 日

#629Rust 模式

Download history 221727/week @ 2024-03-14 229338/week @ 2024-03-21 224264/week @ 2024-03-28 232940/week @ 2024-04-04 247017/week @ 2024-04-11 238341/week @ 2024-04-18 237661/week @ 2024-04-25 241852/week @ 2024-05-02 235039/week @ 2024-05-09 250945/week @ 2024-05-16 250850/week @ 2024-05-23 276525/week @ 2024-05-30 268287/week @ 2024-06-06 267782/week @ 2024-06-13 273763/week @ 2024-06-20 217928/week @ 2024-06-27

1,080,149 每月下载量
用于 2,095 个包 (11 个直接使用)

MIT/Apache

9KB
140

rawpointer

请在此处阅读 API 文档

build_status

最近更改

  • 0.2.0
    • 添加对 NonNull<T> 的支持
    • 添加更多文档和示例
    • 现在需要 Rust 1.26 或更高版本
  • 0.1.0
    • 初始版本

lib.rs:

Rawpointer 为原始指针 *const T*mut TNonNull<T> 添加了额外的实用方法。

功能包括

  • 步进偏移 - .stride_offset(步进, 索引) 可以轻松计算索引为无符号且步进为有符号的指针偏移。

  • NonNull 提供通用的偏移方法,因为它从 libcore 中没有这些方法

  • 后增量和前增量以及后减量和前减量方法

use rawpointer::PointerExt;

unsafe {
    // In this example:
    // Use .post_inc() to iterate and overwrite the first four
    // elements of the array.

    let mut xs = [0; 16];
    let mut ptr = xs.as_mut_ptr();
    let end = ptr.offset(4);
    let mut i = 0;
    while ptr != end {
        *ptr.post_inc() = i;
        i += 1;
    }
    assert_eq!(&xs[..8], &[0, 1, 2, 3, 0, 0, 0, 0]);
}

安全性

有关更多信息,请参阅 Rust core::ptr 文档。

Rust 版本

此版本需要 Rust 1.26 或更高版本

无运行时依赖