use
useの通常パターン
#![allow(unused)] fn main() { use embedded_hal::delay::DelayNs; }
単純に省略しているパターンです。
こうすることでembedded_hal::delay::DelayNsはDelayNsで呼び出し可能になります。
useの*パターン
*を最後につけるとそれ以下のmod(モジュール)や関数を呼び出せるようになります。
#![allow(unused)] fn main() { use defmt::*; }
イメージで説明すると、crate_aの下にモジュール(m1)があり、m1内に関数func3があった場合、それらが省略できるという意味です。
crate_a
├── m1
└── func2
use crate_a::*; fn main(){ m1::func3(); // crate_a::M1::func3としなくてよい func2(); // crate_a::func2()としなくて良い }
as
#![allow(unused)] fn main() { use rp2040_hal as hal; }
asは、asの前のクレート名を変更する機能を持っています。この文だとrp2040_halからhalにクレート名を変更しています。
useのas _パターン
#![allow(unused)] fn main() { use defmt_rtt as _; use panic_probe as _; }
これは、クレートをmain.rsに取り込んだ後に、as _でクレート名を_に変換することで、main.rsで直接呼び出しをできないようにしています。(Underscore Imports)
defmt_rttの例で説明すると、defmt_rttはdefmtをrttとして利用する設定にし、その後にas _をすることでmain.rsで直接参照できなくなるのでmain.rsに悪影響を与えなくなります。