TL; DR: Это проектное решение.Компилятор Rust может разумно определить, необходима ли изменчивость или нет;однако для читателя это может быть неочевидно.
Длинная история
Если вы посмотрите на предшественников Rust, вы обнаружите, что использование ссылочных аргументовв C ++ не ценится повсеместно.В C ++:
foo.call(bar);
только определение call
сообщит вам, передан ли bar
по значению, константной или изменяемой ссылке.В результате, Руководство по стилю Google печально известно тем, что оно обязывает передавать по указателю любой изменяемый аргумент, чтобы различать на стороне вызова , может ли переменная быть измененаили нет.
При проектировании Rust большое внимание было уделено ясности.Причина заключается в том, что код читается чаще, чем написано, и поэтому синтаксис и семантика должны быть оптимизированы для чтения и понимания.
Существует противоречие между явностью и краткостью, поэтому явность не всегда предпочтительна, ночасто это так.
В случае изменяемых ссылок, учитывая правила, связанные с проверкой заимствований и влиянием изменяемых заимствований на них, предпочтение было отдано явной.