5 releases
Uses old Rust 2015
0.1.2 | Oct 14, 2021 |
---|---|
0.1.1 | Jan 28, 2019 |
0.1.0 | Apr 15, 2018 |
0.0.2 | Sep 10, 2017 |
0.0.1 | Sep 10, 2017 |
#860 in Rust patterns
41,649 downloads per month
Used in 47 crates
(9 directly)
14KB
243 lines
cstr-argument
A trait for converting function arguments to null terminated strings
Usage
Add this to your Cargo.toml
:
[dependencies]
cstr-argument = "0.0.2"
and this to your crate root:
extern crate cstr_argument;
Example
use std::os::raw::c_char;
use cstr_argument::CStrArgument;
extern "C" {
fn foo(s: *const c_char);
}
fn bar<S: CStrArgument>(s: S) {
let s = s.into_cstr();
unsafe {
foo(s.as_ref().as_ptr())
}
}
fn baz() {
bar("hello "); // Argument will be converted to a CString requiring an allocation
bar("world\0"); // Argument will be converted to a CStr without allocation
bar("!".to_owned()); // Argument will be converted to a CString possibly requiring an allocation
}
Dependencies
~110–250KB