До сегодняшнего дня, я думал, объявив переменную без mut
, убедитесь, что она не может быть изменена после инициализации.Есть ли способ объявить переменную неизменной значимым образом?
Я думал, что это здорово, потому что я всегда возмущался тем, что const
в C и C++ ничего не гарантировал.
Я только что узнал, что я ошибся: ржавчина допускает внутреннюю изменчивость (см. std::cell). Это дает вам некоторые гарантии, но не то, что я ожидаю и желаю, когда я услышу непреложный.
Есть ли способ объявить что-то «действительно неизменным»?
Вы всегда можете использовать небезопасный код, чтобы разорвать любую гарантию неизменности, нет никакого способа обойти это ... –
Если вы не хотите внутренней изменчивости, а что просто не использовать типы, которые ее предоставляют? – Levans
@ Levans это может быть не так тривиально, возможно, тип, который вы используете, является общим, и пользователь может подключить тип с внутренней изменчивостью. Или вы используете тип, в котором есть частное поле с внутренней изменчивостью ... Вы, возможно, никогда не узнаете об этом ... –