EG
Мы сейчас обсуждаем обычные языки. Их имеет смысл прослеживать до машинного кода.
Size: a a a
EG
P
P
EG
P
EG
P
EG
P
EG
P
B
P
VS
B
B
P
B
В
impl<T: Consts> Struct<T> {
fn fmt(&self, f: &mut Formatter<'_>) -> fmt::Result {
let s = match T::CONSTS {
X::CONSTS => {},
Y::CONSTS => {},
... // и так условно 100-200 вариантов
}
match s {
Some(str) => f.write_str(s),
None => { ... }
}
}
}
В
mov rdi, rsi
lea rsi, [rip, +, .L__unnamed_2]
mov edx, 2
jmp qword, ptr, [rip, +, _ZN4core3fmt9Formatter9write_str17h89ba7346b8689845E@GOTPCREL]