#[entry]
fn main() -> ! {
    let p = Peripherals::take().unwrap();
    let gpio0 = p0::Parts::new(p.P0);
    let pin: P0_01<Disconnected> = gpio0.p0_01;
    // let gpio0_01_again = gpio0.p0_01; // Error, moved.
    let pin_input: P0_01<Input<Floating>> = pin.into_floating_input();
    if pin_input.is_high().unwrap() {
        // ...
    }
    let mut pin_output: P0_01<Output<OpenDrain>> = pin_input
        .into_open_drain_output(OpenDrainConfig::Disconnect0Standard1, Level::Low);
    pin_output.set_high().unwrap();
    // pin_input.is_high(); // Error, moved.
    let _pin2: P0_02<Output<OpenDrain>> = gpio0
        .p0_02
        .into_open_drain_output(OpenDrainConfig::Disconnect0Standard1, Level::Low);
    let _pin3: P0_03<Output<PushPull>> = gpio0.p0_03.into_push_pull_output(Level::Low);
    loop {}
}
- ํ์ 
Copy ๋๋ Clone์ ๊ตฌํํ์ง ์์ผ๋ฏ๋ก ๊ฐ๊ฐ ํ๋์ ์ธ์คํด์ค๋ง ์กด์ฌํ  ์ ์์ต๋๋ค. ํ์ ํฌํธ ๊ตฌ์กฐ์ฒด ๋ฐ์ผ๋ก ์ด๋ํ๋ฉด ์๋ฌด๋ ์ฌ์ฉํ  ์ ์์ต๋๋ค. 
- ํ ๊ตฌ์ฑ์ ๋ณ๊ฒฝํ๋ฉด ์ด์  ํ ์ธ์คํด์ค๊ฐ ์ฌ์ฉ๋๋ฏ๋ก ์ดํ์ ์ด์  ์ธ์คํด์ค๋ฅผ ๊ณ์ ์ฌ์ฉํ  ์ ์์ต๋๋ค.
 
- ๊ฐ ์ ํ์ ํ์ฌ ์ํ๋ฅผ ๋ํ๋
๋๋ค. ์๋ฅผ ๋ค์ด ์ด ๊ฒฝ์ฐ์๋ GPIO ํ์ ๊ตฌ์ฑ ์ํ์
๋๋ค. ์ด๋ ๊ฒ ํ๋ฉด ์ํ ๋จธ์ ์ด ์ ํ ์์คํ
์ผ๋ก ์ธ์ฝ๋ฉ๋๋ฉฐ, ๋จผ์  ์ฌ๋ฐ๋ฅด๊ฒ ๊ตฌ์ฑํ ํ ํน์  ๋ฐฉ์์ผ๋ก ํ์ ์ฌ์ฉํ๋๋ก ํฉ๋๋ค. ์๋ชป๋ ์ํ ์ ํ์ ์ปดํ์ผ ์๊ฐ์ ํฌ์ฐฉ๋ฉ๋๋ค.
 
- ์
๋ ฅ ํ์์ 
is_high๋ฅผ ํธ์ถํ๊ณ  ์ถ๋ ฅ ํ์์ set_high๋ฅผ ํธ์ถํ  ์ ์์ง๋ง ๊ทธ ๋ฐ๋๋ก๋ ์ ๋ฉ๋๋ค. 
- ๋ง์ HAL ํฌ๋ ์ดํธ๋ค์ด ์ด ํจํด์ ๋ฐ๋ฆ
๋๋ค.