[−][src]Crate byte_strings
byte-strings-rs
Rust zero-cost byte strings manipulation, for a better and safer FFI
Example
Featuring the c_str!
macro to create valid C string literals with literally no
runtime cost!
/// Some lib mod safe { use ::std::{ ffi::CStr, os::raw::{c_char, c_int}, }; /// private unsafe C FFI mod ffi { use super::*; extern "C" { pub fn puts (_: *const c_char) -> c_int; }} /// lib API: safe Rust wrapper => uses `CStr` pub fn puts (message: &'_ CStr) -> i32 { unsafe { ffi::puts(message.as_ptr()) as i32 } } } fn main () { use ::byte_strings::c_str; dbg!(safe::puts( c_str!( "Hello, ", "World!", ) // No runtime error, no runtime cost )); }
Macros
as_bytes | Evaluates the input string literal as a byte string literal. |
c_str | Converts into a valid C string at compile time (no runtime cost) |
concat_bytes | Concatenates byte string literals into a single byte string literal |