Crates.io | rs_container_ffi |
lib.rs | rs_container_ffi |
version | 2025.1.6 |
source | src |
created_at | 2024-11-29 09:59:35.345678+00 |
updated_at | 2025-01-06 13:52:16.741399+00 |
description | Wrap Rust Vec, std::collections::{BTreeMap, BTreeSet} for C |
homepage | |
repository | https://github.com/ascpkg/asc/tree/main/rs_container_ffi |
max_upload_size | |
id | 1465367 |
size | 7,929 |
// copy ../c_source_parser_ffi/src/rs_container_ffi/btree_map.h
// full example can be found at ../c_source_parser_ffi
// use rust BTreeMap<String, BTreeSet<String>>
// new BTreeMap<String, BTreeSet<String>>
RustBtreeMapOfStrSet map = rust_btree_set_of_str_new();
// insert key and value to BTreeMap<String, BTreeSet<String>>
rust_btree_set_of_str_insert(map, "key", "value");
// drop BTreeMap<String, BTreeSet<String>>
rust_btree_set_of_str_drop(map);
// use rust BTreeSet<String>
// new BTreeSet<String>
RustBtreeSetOfStr set = rust_btree_set_of_str_new();
// insert foo to BTreeSet<String>
rust_btree_set_of_str_insert(set, "foo");
// insert bar to BTreeSet<String>
rust_btree_set_of_str_insert(set, "bar");
// if foo in BTreeSet<String> return 1 else 0
int is_foo_exists = rust_btree_set_of_str_contains(set, "foo");
// drop BTreeSet<String>
rust_btree_set_of_str_drop(set);
// use rust Vec<String>
// new Vec<String>
RustVecOfStr vec = rust_vec_of_str_new();
// push a to Vec<String>
rust_vec_of_str_push(vec, "a");
// push b to Vec<String>
rust_vec_of_str_push(vec, "b");
// push c to Vec<String>
rust_vec_of_str_push(vec, "c");
// push d to Vec<String>
rust_vec_of_str_push(vec, "d");
// reverse Vec<String>
rust_vec_of_str_reverse(vec);
// join Vec<String>
const char *text = rust_vec_of_str_join("/"); // d/c/b/c
// drop Vec<String>
rust_vec_of_str_drop(vec)
// drop text (do not use c free or c++ delete)
rust_c_str_drop(text);