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.