use

useの通常パターン

use embedded_hal::delay::DelayNs;

単純に省略しているパターンです。 こうすることでembedded_hal::delay::DelayNsDelayNsで呼び出し可能になります。

use*パターン

*を最後につけるとそれ以下のmod(モジュール)や関数を呼び出せるようになります。

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

use rp2040_hal as hal;

asは、asの前のクレート名を変更する機能を持っています。この文だとrp2040_halからhalにクレート名を変更しています。

useas _パターン

use defmt_rtt as _;
use panic_probe as _;

これは、クレートをmain.rsに取り込んだ後に、as _でクレート名を_に変換することで、main.rsで直接呼び出しをできないようにしています。(Underscore Imports

defmt_rttの例で説明すると、defmt_rttdefmtをrttとして利用する設定にし、その後にas _をすることでmain.rsで直接参照できなくなるのでmain.rsに悪影響を与えなくなります。