AtCoder Beginner Contest 256 A

https://atcoder.jp/contests/abc256/tasks/abc256_a

ビットシフトを使えば簡単ですが、pow関数は使えないのでしょうか。

    let N: i32 = read();
    println!("{}", 2.pow(N))
error[E0689]: can't call method `pow` on ambiguous numeric type `{integer}`

2だと型が分からないんですね。i32にすると、

    let N: i32 = read();
    println!("{}", 2i32.pow(N))
error[E0308]: mismatched types
  --> src/main.rs:16:26
   |
16 |     println!("{}", 2i32.pow(N))
   |                             ^ expected `u32`, found `i32`

u32でないといけないんですね。負なら整数にならないですからね。

fn read<T: std::str::FromStr>() -> T {
    let mut line = String::new();
    std::io::stdin().read_line(&mut line).ok();
    line.trim().parse().ok().unwrap()
}

fn read_vec<T: std::str::FromStr>() -> Vec<T> {
    read::<String>().split_whitespace()
            .map(|e| e.parse().ok().unwrap()).collect()
}

fn main() {
    let N: u32 = read();
    println!("{}", 2i32.pow(N))
}