Rustの生成したネイティブコードを見ると、 _ZN6thread5sleep20h87eee61de4645181cAbE のようなシンボル名が見える。この例は std::thread::sleep に対応している。このようにRustの(単相化された)アイテム(関数や変数など)の名前をリンカが認識できる文字列にエンコードする処理はマングリングと呼ばれている。 Rustのマングリングは一見してわかるようにC++互換になっている。実際に上の関数をデマングルすると $ c++filt _ZN6thread5sleep20h87eee61de4645181cAbE thread::sleep::h87eee61de4645181cAb と、それらしき名前が出てくる。 しかし、これは表層上C++互換になっているというだけで、Rustのマングリングの本質はこのハッシュ部分 h87eee61de464