Crate hicc_std

Source
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();

注意:

  1. 必须包含hicc/std目录下对应的标准库同名文件.
  2. 可以使用非缺省模版参数. 比如可以支持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();
  //...
}

注意:

  1. 模版参数类型只能是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§

ForwardListIterMut
对应std::forward_list<T>::iterator
ListIterMut
对应std::list<T>::iterator
ListRevIterMut
对应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>.

Type Aliases§

string
对应std::string
u16string
对应std::u16string
u32string
对应std::u32string