{"action":"created","issue":{"url":"https://api.github.com/repos/rust-lang/rfcs/issues/1180","labels_url":"https://api.github.com/repos/rust-lang/rfcs/issues/1180/labels{/name}","comments_url":"https://api.github.com/repos/rust-lang/rfcs/issues/1180/comments","events_url":"https://api.github.com/repos/rust-lang/rfcs/issues/1180/events","html_url":"https://github.com/rust-lang/rfcs/pull/1180","id":91817648,"number":1180,"title":"Propose `Interior<T>` data-type, to allow moves out of the dropped value during the drop hook.","user":{"login":"aidancully","id":503301,"avatar_url":"https://avatars.githubusercontent.com/u/503301?v=3","gravatar_id":"","url":"https://api.github.com/users/aidancully","html_url":"https://github.com/aidancully","followers_url":"https://api.github.com/users/aidancully/followers","following_url":"https://api.github.com/users/aidancully/following{/other_user}","gists_url":"https://api.github.com/users/aidancully/gists{/gist_id}","starred_url":"https://api.github.com/users/aidancully/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/aidancully/subscriptions","organizations_url":"https://api.github.com/users/aidancully/orgs","repos_url":"https://api.github.com/users/aidancully/repos","events_url":"https://api.github.com/users/aidancully/events{/privacy}","received_events_url":"https://api.github.com/users/aidancully/received_events","type":"User","site_admin":false},"labels":[{"url":"https://api.github.com/repos/rust-lang/rfcs/labels/T-lang","name":"T-lang","color":"bfd4f2"}],"state":"open","locked":false,"assignee":null,"milestone":null,"comments":27,"created_at":"2015-06-29T14:18:54Z","updated_at":"2015-07-05T07:56:07Z","closed_at":null,"pull_request":{"url":"https://api.github.com/repos/rust-lang/rfcs/pulls/1180","html_url":"https://github.com/rust-lang/rfcs/pull/1180","diff_url":"https://github.com/rust-lang/rfcs/pull/1180.diff","patch_url":"https://github.com/rust-lang/rfcs/pull/1180.patch"},"body":"[rendered](https://github.com/aidancully/rfcs/blob/interior/text/0000-interior.md)"},"comment":{"url":"https://api.github.com/repos/rust-lang/rfcs/issues/comments/118594357","html_url":"https://github.com/rust-lang/rfcs/pull/1180#issuecomment-118594357","issue_url":"https://api.github.com/repos/rust-lang/rfcs/issues/1180","id":118594357,"user":{"login":"aidancully","id":503301,"avatar_url":"https://avatars.githubusercontent.com/u/503301?v=3","gravatar_id":"","url":"https://api.github.com/users/aidancully","html_url":"https://github.com/aidancully","followers_url":"https://api.github.com/users/aidancully/followers","following_url":"https://api.github.com/users/aidancully/following{/other_user}","gists_url":"https://api.github.com/users/aidancully/gists{/gist_id}","starred_url":"https://api.github.com/users/aidancully/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/aidancully/subscriptions","organizations_url":"https://api.github.com/users/aidancully/orgs","repos_url":"https://api.github.com/users/aidancully/repos","events_url":"https://api.github.com/users/aidancully/events{/privacy}","received_events_url":"https://api.github.com/users/aidancully/received_events","type":"User","site_admin":false},"created_at":"2015-07-05T07:56:07Z","updated_at":"2015-07-05T07:56:07Z","body":"@eddyb: There are no essential differences in behavior between `Interior<T>` and `<T as DropShell>::Inner` - it's still essentially your design, this is basically a bike-shed. On the other hand, I think `DropShell` may match compiler behavior better, and (as such) be easier to explain than `Interior<T>` is. Of course this is subjective, but IMO:\r\n\r\n* When I first saw `Interior<T>`, I immediately wondered what `Interior<Interior<T>>` might mean... If I see `<T as DropShell>::Inner`, it takes a bigger leap for me to ask about `<<T as DropShell>::Inner as DropShell>::Inner`, and it feels more reasonable for the compiler to prevent constructing such a type.\r\n\r\n* `DropShell` sounds like something that will prevent partial moves: values are usually encased in a shell, and must be moved as a unit. `DropShell::Inner` sounds like you've unwrapped the contents, so that now you can have partial moves. It's nicely self-documenting.\r\n\r\n* This is probably the most subjective point here, but I don't have the same urge to self-bikeshed the names...\r\n\r\nbut your mileage may vary..."}}