2 unstable releases

Uses new Rust 2024

new 0.2.0 May 3, 2025
0.1.1 May 2, 2025

#2320 in Procedural macros

Download history 87/week @ 2025-04-27

87 downloads per month
Used in seasick

Apache-2.0 OR MIT

18KB
469 lines

FFI-safe types for writing and transcribing C APIs.

&CStr and CString are not FFI safe.

#[deny(improper_ctypes)]
extern "C" {
    fn concat(_: &CStr, _: &CStr) -> CString;
}

&SeaStr and SeaString are FFI-safe equivalents.

extern "C" {
    fn concat(_: &SeaStr, _: &SeaStr) -> SeaString;
}

They use the non-null niche which is filled by Option::None.

/** may return null */
char *foo(void);
extern "C" fn foo() -> Option<SeaString> { .. }
assert_eq!(size_of::<Option<SeaString>>(), size_of::<*mut c_char>());

SeaBox is an additional owned pointer type, with a pluggable Allocator.

Dependencies

~255–690KB
~16K SLoC