Наткнулся на хабре на пост о rust и несколько прифигел:
fn main() {
let original_owner = String::from("Something");
let new_owner = original_owner;
println!("{}", original_owner);
}
Афтор пишет, что подобный код вызавет ошибку в rust, а чому так оно же в одном блоке видимости все происходит, чому rust затирает переменную буквально сразу после присваивания? Чего ради это сделано?
Попробовал такое же на java и никакой ошибки нет, код компилируется и выполняется:
public static void main(String[] args) {
String original_owner = new String("Something");
String new_owner = original_owner;
System.out.println(original_owner);
}
Отсутствие классов отдельный рофл: давайте получать экземляры объектов не на уровне класса, а на уровне метода, в который напихаем ещё пачку методов и побольше. Зато нет наследования, да.