1/6

Result<T, E> is an ordinary enum. There is nothing built into the language about it except one operator.

enum Result<T, E> { Ok(T), Err(E) }

? is that operator. Applied to a Result, it unwraps Ok and returns early on Err:

let n: i64 = raw.trim().parse()?;

which is exactly:

let n: i64 = match raw.trim().parse() {
    Ok(v) => v,
    Err(e) => return Err(From::from(e)),
};