Expand description
§features = "test"
为测试用例提供具体容器的创建函数.
# cargo test --features "test"
§使用方式
hicc-std
只提供了string/u16string/u32string
的创建接口可直接使用.
其他容器类型需要使用者实现所需具体类型的创建函数.
§c++
适配代码.
// src/my_lib.cpp
#include <hicc/std/memory.hpp>
#include <hicc/std/vector.hpp>
#include <hicc/std/map.hpp>
#include <hicc/std/string.hpp>
EXPORT_METHODS_BEG(my_lib) {
EXPORT_METHOD(&hicc::make_unique<std::vector<std::map<int, std::string>>>);
}EXPORT_METHODS_END();
注意:
- 必须包含
hicc/std
目录下对应的标准库同名文件. - 可以使用非缺省模版参数. 比如可以支持
std::vector<T, MyAllocator>
.
§rust api
定义.
struct MyContainer;
hicc::import_lib! {
/// 和`c++`侧`EXPORT_METHODS_BEG`宏的参数保持一致.
#[link_name = "my_lib"]
/// 建议关联到`MyContainer::new`, 直接调用`vec_map_int_string_new`也可以.
#[member(class = MyContainer, method = new)]
fn vec_map_int_string_new() -> hicc_std::vector<hicc_std::map<hicc::Pod<i32>, hicc_std::string>>;
}
fn main() {
let container = MyContainer::new();
//...
}
注意:
- 模版参数类型只能是
c++
类或者可直接在CABI
接口上传递使用的POD
数据类型,后者只能结合hicc::Pod<T>
使用.
§build.rs
编译c++
代码
hicc_build::Build::new().file("src/my_lib.cpp").compile("my_lib_1.0");
println!("cargo::rustc-link-lib=my_lib_1.0");
println!("cargo::rustc-link-lib=stdc++");
注意: 需要链接到c++
标准库, 这里指定的是stdc++
.
Structs§
- Forward
List Iter Mut - 对应
std::forward_list<T>::iterator
- List
Iter Mut - 对应
std::list<T>::iterator
- List
RevIter Mut - 对应
std::list<T>::reverse_iterator
- VecBool
- 对应
std::vector<bool>
. - array
- 对应
std::array<T, N>
. - basic_
string - 对应
std::basic_string<charT>
. - deque
- 对应
std::deque<T>
. - forward_
list - 对应
std::forward_list<T>
. - list
- 对应
std::list<T>
. - map
- 对应
std::map<K, V>
- multimap
- 对应
std::multimap<K, V>
- multiset
- 对应
std::multiset<T>
, - priority_
queue - 对应
std::priority_queue<T>
- queue
- 对应
std::queue<T>
- set
- 对应
std::set<T>
, - shared_
ptr - 对应
std::shared_ptr<T>
- stack
- 对应
std::stack<T>
- unique_
ptr - 对应
std::unique_ptr<T, D>
- unordered_
map - 对应
std::unordered_map<K, V>
- unordered_
multimap - 对应
std::unordered_multimap<K, V>
- unordered_
multiset - 对应
std::unordered_multiset
, - unordered_
set - 对应
std::unordered_set
, - vector
- 对应
std::vector<T>
. - weak_
ptr - 对应
std::weak_ptr<T>
.