21 stable releases

Uses old Rust 2015

2.0.0 Sep 25, 2020
1.3.3 May 1, 2019
1.3.2 Aug 2, 2018
1.3.1 Jun 16, 2018
1.0.10 Mar 25, 2015

#819 in Data structures

Download history 6353/week @ 2026-02-23 7143/week @ 2026-03-02 6591/week @ 2026-03-09 4985/week @ 2026-03-16 4452/week @ 2026-03-23 6231/week @ 2026-03-30 6874/week @ 2026-04-06 6693/week @ 2026-04-13 4136/week @ 2026-04-20 5146/week @ 2026-04-27 5972/week @ 2026-05-04 10336/week @ 2026-05-11 7798/week @ 2026-05-18 7791/week @ 2026-05-25 6259/week @ 2026-06-01 6873/week @ 2026-06-08

29,202 downloads per month
Used in 97 crates (7 directly)

Apache-2.0/MIT

34KB
493 lines

c_vec Build Status

Structures to wrap C arrays. Here's a little example:

extern crate libc;
extern crate c_vec;

use c_vec::{CVec, CSlice};

fn some_func(cvec: *mut libc::c_int, len: libc::c_uint) {
    // safe wrapper, you can pass a destructor with new_with_dtor() method
    let v = unsafe { CVec::new(cvec, len as usize) };
    // unsafe wrapper with no destructor
    let mut s = unsafe { CSlice::new(cvec, len as usize) };

    println!("cvec:   converted from c array: {:?}", v.as_ref());
    println!("cslice: converted from c array: {:?}", s.as_mut());
}

Usage

You can use it directly by adding this line to your Cargo.toml file:

[dependencies]
c_vec = "^1.0.0"

Here's the crates.io page for c_vec.

License

This project is under the MIT and Apache 2.0 licenses. Please take a look at the license files for more information.

No runtime deps