#string #syscalls #pointers #abi #reference #thin #slice

nightly null-terminated

Library of null-terminated slices and UTF-8-encoded strings with thin references

24 releases

Uses old Rust 2015

0.3.17 Dec 14, 2021
0.3.15 May 26, 2021
0.3.14 Dec 9, 2019
0.3.9 Apr 24, 2019
0.2.6 Dec 22, 2017

#1880 in Rust patterns

Download history 88/week @ 2024-07-19 153/week @ 2024-07-26 182/week @ 2024-08-02 359/week @ 2024-08-09 420/week @ 2024-08-16 241/week @ 2024-08-23 263/week @ 2024-08-30 212/week @ 2024-09-06 326/week @ 2024-09-13 294/week @ 2024-09-20 283/week @ 2024-09-27 436/week @ 2024-10-04 781/week @ 2024-10-11 235/week @ 2024-10-18 199/week @ 2024-10-25 234/week @ 2024-11-01

1,517 downloads per month
Used in 9 crates (6 directly)

MIT/Apache

20KB
317 lines

null-terminated

Library of null-terminated slices and UTF-8-encoded strings, references to which are thin pointers for efficiency and ease of use with FFI

The likely primary use cases are C FFI and OS ABI (for example: on Unix, many system calls take, and the initial environment involves, null-terminated arguments).

As the representation is a bare pointer to the element type, one can declare foreign functions which merely take arguments or return values of type Nul<_>, for example:

extern "C" {
    fn strlen(_: &Nul<u8>) -> usize;
    fn strchr(_: &Nul<u8>, _: c_int) -> &Nul<u8>;
}

For further examples, see the docs of Nul.

License: MIT OR Apache-2.0


lib.rs:

Library of null-terminated slices and UTF-8-encoded strings, references to which are thin pointers for efficiency and ease of use with FFI

The likely primary use cases are C FFI and OS ABI (for example: on Unix, many system calls take, and the initial environment involves, null-terminated arguments).

As the representation is a bare pointer to the element type, one can declare foreign functions which merely take arguments or return values of type Nul<_>, for example:

extern "C" {
    fn strlen(_: &Nul<u8>) -> usize;
    fn strchr(_: &Nul<u8>, _: c_int) -> &Nul<u8>;
}

For further examples, see the docs of Nul.

Dependencies

~1.5MB
~37K SLoC