Skip to content
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
31 changes: 31 additions & 0 deletions active/0032-remove-cross-borrowing.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
- Start Date: 2014-06-09
- RFC PR #: 112
- Rust Issue #: #10504

# Summary

Remove the coercion from `Box<T>` to `&mut T` from the language.

# Motivation

Currently, the coercion between `Box<T>` to `&mut T` can be a hazard because it can lead to surprising mutation where it was not expected.

# Detailed design

The coercion between `Box<T>` and `&mut T` should be removed.

Note that methods that take `&mut self` can still be called on values of type `Box<T>` without any special referencing or dereferencing. That is because the semantics of auto-deref and auto-ref conspire to make it work: the types unify after one autoderef followed by one autoref.

# Drawbacks

Borrowing from `Box<T>` to `&mut T` may be convenient.

# Alternatives

An alternative is to remove `&T` coercions as well, but this was decided against as they are convenient.

The impact of not doing this is that the coercion will remain.

# Unresolved questions

None.