Tipos Adicionais

Tipo em RustTipo em C++
Stringrust::String
&strrust::Str
CxxStringstd::string
&[T]/&mut [T]rust::Slice
Box<T>rust::Box<T>
UniquePtr<T>std::unique_ptr<T>
Vec<T>rust::Vec<T>
CxxVector<T>std::vector<T>
  • Esses tipos podem ser usados nos campos de structs compartilhadas e nos argumentos e retornos de funções externas.
  • Observe que a String do Rust não é mapeada diretamente para std::string. Há algumas razões para isso:
    • std::string não mantém a invariante UTF-8 que String requer.
    • Os dois tipos têm layouts diferentes na memória e, portanto, não podem ser passados diretamente entre as linguagens.
    • std::string requer construtores de movimento que não correspondem à semântica de movimento do Rust, portanto, uma std::string não pode ser passada por valor para o Rust.