LINUX.ORG.RU

История изменений

Исправление DarkEld3r, (текущая версия) :

Так обычные статики, которые не в ffi, а просто так, тоже могут иметь «внутреннюю изменяемость» (interior mutability)

Мне казалось, что «interior mutability» ортогональна статикам. В смысле, std::cell позволяет иметь внутреннее изменяемое состояние «обычным типам» (не статикам)?

Если хочешь, что бы оно точно-точно не изменялось, то надо не static, а const.

Про const в расте, вроде, ничего и не видел ещё.

Ну и пока что сбит с толку. Строковые литералы ведь имеют тип «&'static str» - казалось бы куда ещё константнее. Хотя я так понимаю, что static - это больше про «время жизни».

Ссылку почитаю, там и про константы есть, но похоже надо немного всё переосмыслить. Ну и насколько я вижу, константы накладывают много ограничений. Вообще, есть ли смысл их прописывать «везде» (где можно)?

Просто раньше мне всё казалось проще: иммутабельность по умолчанию (и это здорово), если надо - пишешь mut. «Внутренняя мутабельность», после С++, вообще не смущает, необходимость вполне понятна. Ну и статики как раз иммутабельны, по умолчанию, как и всё остальное. Более того, если добавить mut, то будет «use of mutable static requires unsafe function or block».

А возможность «неявной модификации» «иммутабельных» простых типов разрывает шаблон.

Исходная версия DarkEld3r, :

Так обычные статики, которые не в ffi, а просто так, тоже могут иметь «внутреннюю изменяемость» (interior mutability)

Мне казалось, что «interior mutability» ортогональна статикам. В смысле, std::cell позволяет иметь внутреннее изменяемое состояние «обычным типам» (не статикам)?

Если хочешь, что бы оно точно-точно не изменялось, то надо не static, а const.

Про const в расте, вроде, ничего и не видел ещё.

Ну и пока что сбит с толку. Строковые литералы ведь имеют тип «&'static str» - казалось бы куда ещё константнее. Хотя я так понимаю, что static - это больше про «время жизни».

Ссылку почитаю, там и про константы есть, но похоже надо немного всё переосмыслить. Ну и насколько я вижу, константы накладывают много ограничений. Вообще, есть ли смысл их прописывать «везде» (где можно)?

Просто раньше мне всё казалось проще: иммутабельность по умолчанию (и это здорово), если надо - пишешь mut. «Внутренняя мутабельность», после С++, вообще не смущает, необходимость вполне понятна. Ну и статики как раз иммутабельны, по умолчанию, как и всё остальное. Более того, если добавить mut, то будет «use of mutable static requires unsafe function or block».