Знакомлюсь сейчас с "потенциальными убийцами С++", в частности с Rust и Go. С удивлением обнаружил, что и там и там поддерживается структурная типизация, то есть (псевдокод):
type liters { value : float };
type meters { value : float };
С точки зрения компилятора одно и то же и ничто не мешает нам вместо литров присвоить метры. Допускаю, что я что-то не понимаю, поэтому буду признателен за объяснения плюсов структрурной типизации перед номинативной.