Join GitHub today
GitHub is home to over 28 million developers working together to host and review code, manage projects, and build software together.Sign up
Rename "Const" trait to "Freeze" #3949
I propose we change the third one, and leave the other two as they are.
Copying a comment I accidentally wrote in #3542:
I strongly agree with not having const have so many overloaded meanings. To be honest, I think const-the-mutability-qualifier is the odd man out here, and I would like to change it to something else, but I don't know what (read? too valuable to use as a keyword. mut?? looks funny, can't pronounce it. rd or ro? Eh.). I think there is another issue to this effect. I know @jruderman has raised the issue before (and rightly so).
That said, I think Freeze may not be the right name for the trait we currently call Const. Here is my reasoning: a freezable data structure is one which is based purely on owned data and with no explicit mutable qualifiers. This is currently described by Send Const---the Const captures the lack of mutability qualifiers and the Send captures the "relies purely on owned data". So it seems to me that Freeze, if it exists, should be a "subtrait" of Send and Const.
Now, it is not clear to me whether a trait that means "immutable" is necessary on its own. @pcwalton and I have talked about some ideas for removing pure functions and replacing them with closures with a "Const" bound, so it'd be important then. The best name I can come up for to replace Const is Imm (for Immutable, which seems a touch long), even though it is true that an instance of an Imm type, when placed in a mutable local variable (or other mutable context), is in fact mutable. But somehow NoMut doesn't seem to have the same ring!