#null-terminated #string #ffi #arguments #converting #cstr #cargo

cstr-argument

A trait for converting function arguments to null terminated strings

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

Download history 9612/week @ 2024-08-10 8966/week @ 2024-08-17 10000/week @ 2024-08-24 8604/week @ 2024-08-31 8759/week @ 2024-09-07 8734/week @ 2024-09-14 11245/week @ 2024-09-21 10139/week @ 2024-09-28 9658/week @ 2024-10-05 10880/week @ 2024-10-12 9140/week @ 2024-10-19 9798/week @ 2024-10-26 9585/week @ 2024-11-02 10423/week @ 2024-11-09 11501/week @ 2024-11-16 8292/week @ 2024-11-23

41,649 downloads per month
Used in 47 crates (9 directly)

Unlicense

14KB
243 lines

cstr-argument

A trait for converting function arguments to null terminated strings

Build Status Version

Documentation

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