The annoying thing is that (because of type inference) parts of the expression could be within different expressions:
fn required_bytes(width: u16, height: u16) -> u64 {
let size = width * height; // what's the type of size?
size + 12
}