+We could literally write functions transmuting between the two, and we could justify them in my model.
+Clearly, `insert` taking `entry: &&T` would be unsound as nothing stops the entry from being moved later:
+{% highlight rust %}
+fn main() {
+ let mut collection = PinBox::new(Collection::new());
+ let entry = {
+ let mut entry = Box::new(Entry::new(42));
+ collection.as_pin().insert(&&*entry); // Register boxed entry in collection
+ *entry // Move entry out of the Box, and drop the box
+ };
+ // We keep the entry so it does not get dropped.
+ // The collection still points to the now deallocated box!
+ collection.as_pin().print_all(); // Fireworks happen
+}
+{% endhighlight %}
+This shows that the version of `insert` that takes a shared reference cannot be sound in the model.