関数が使われていないという旨の警告が発生します。そのメンバのフィールドにも使えます。パブリックにしてもそのメンバまでは自動的にパブリックになりません。付ける必要があります。関数がパブリックになり、呼び出せるようになりました。打つのは非常に長くて退屈ですね。Rustにはもう1つ、現在のスコープに名前をインポートするキーワードがあるので、それを使えば短い名前で参照できます。ついて説明しましょう。キーワードがあり、ローカルスコープの中に名前をインポートできます。以下のように変えてみましょう。行はローカルスコープの中に各モジュールをインポートしているため、とても短い名前で関数を参照できます。慣習では関数をインポートする場合、関数を直接インポートするよりもモジュール単位でするのがベストプラクティスだと考えられています。goodbye());}しかしこれは慣用的ではありません。名前の競合を引き起こす可能性が非常に高まるからです。この短いプログラムだと大したことではありませんが、長くなるにつれ問題になります。名前が競合するとコンパイルエラーになります。関数をパブリックにして、以下を試してみます。hello());}Rustはコンパイル時にエラーを起こします。`phrases`.同じモジュールから複数の名前をインポートする場合、二度同じ文字を打つ必要はありません。phrases::english::farewells;このショートカットが使えます。識別子を短くするためだけに用いるのではありません。他のモジュール内の関数を再エクスポートするためにクレートの中で使うこともできます。これを使って内部のコード構成そのままではない外部向けインターフェースを提供できます。以下のように変更します。モジュールをパブリックに変更します。japanese;続いて、2つの関数をパブリックにします。以下のように変更します。スコープへ持ち込みます。関数が使えるようになります。内部の構成で外部向けのインターフェースが決まるわけではありません。スコープの中に持ち込めるようになりました。することでワイルドカード構文が使えます。宣言はクレートのルートから始まる絶対パスです。代わりに現在位置からの相対パスにします。あるという考え方を好む人もそれなりにいます。なければ、パスは相対です。内側の関数を参照します。これはビルドして実行できます。文に対し、Rustは簡潔さと利便性を付加できる上級者向けオプションを幾つか提供しています。双方でリネームしています。「phrases」という名前のクレートであっても、ここでは「sayings」として参照することになります。利用できるようにしています。これは異なる場所から同じ名前のアイテムをインポートする際、曖昧さを回避するのに役立ちます。モジュールから全てのパブリックなシンボルを持ってくるためにスターグロブを使っています。関数を参照できています。この類のグロブは慎重に使うべきです。スターグロブにはパブリックなシンボルをインポートするだけの機能しかありません、例えグロブするコードが同一のモジュール内であったとしてもです。文はもっと詳しい説明が必要です。文を1つに圧縮するグロブ「中括弧展開」を用いています(以前にLinuxのシェルスクリプトを書いたことがあるなら、この類の構文は慣れていることでしょう)。この文を展開した形式は以下のようになります。パスの1つ手前を参照します。波括弧はネストできず、スターグロブと混ぜるとこともできません。