4 releases (stable)
Uses old Rust 2015
1.1.1 | Jun 21, 2018 |
---|---|
1.1.0 | Feb 9, 2016 |
1.0.0 | Feb 9, 2016 |
0.1.0 | Jan 13, 2016 |
#2073 in Data structures
102,709 downloads per month
Used in 206 crates
(4 directly)
14KB
275 lines
c_linked_list
This is a Rust library for handling NULL-terminated C linked lists. You can use this library to take a linked list provided by a C library and wrap it as a Rust type.
lib.rs
:
This crate provides utilities for working with NULL-terminated linked lists provided by C code. Suppose you call a foreign function which returns either NULL or a pointer to a node of the following C type.
struct LinkedListNode {
int value;
struct LinkedListNode *next;
};
You can use this library to wrap the C linked list in a rust type, allowing operations such as iteration to be performed on it.
let some_c_linked_list = foreign_function_which_returns_c_linked_list();
let rust_linked_list = unsafe { CLinkedListMut::from_ptr(some_c_linked_list, |n| n.next) };
for (i, node) in rust_linked_list.iter().enumerate() {
println!("some_c_linked_list[{}] == {}", i, node.value);
}