{"action":"created","issue":{"url":"https://api.github.com/repos/rust-lang/rfcs/issues/757","labels_url":"https://api.github.com/repos/rust-lang/rfcs/issues/757/labels{/name}","comments_url":"https://api.github.com/repos/rust-lang/rfcs/issues/757/comments","events_url":"https://api.github.com/repos/rust-lang/rfcs/issues/757/events","html_url":"https://github.com/rust-lang/rfcs/pull/757","id":55815262,"number":757,"title":"Extensible enums","user":{"login":"nikomatsakis","id":155238,"avatar_url":"https://avatars.githubusercontent.com/u/155238?v=3","gravatar_id":"","url":"https://api.github.com/users/nikomatsakis","html_url":"https://github.com/nikomatsakis","followers_url":"https://api.github.com/users/nikomatsakis/followers","following_url":"https://api.github.com/users/nikomatsakis/following{/other_user}","gists_url":"https://api.github.com/users/nikomatsakis/gists{/gist_id}","starred_url":"https://api.github.com/users/nikomatsakis/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/nikomatsakis/subscriptions","organizations_url":"https://api.github.com/users/nikomatsakis/orgs","repos_url":"https://api.github.com/users/nikomatsakis/repos","events_url":"https://api.github.com/users/nikomatsakis/events{/privacy}","received_events_url":"https://api.github.com/users/nikomatsakis/received_events","type":"User","site_admin":false},"labels":[],"state":"open","locked":false,"assignee":{"login":"nikomatsakis","id":155238,"avatar_url":"https://avatars.githubusercontent.com/u/155238?v=3","gravatar_id":"","url":"https://api.github.com/users/nikomatsakis","html_url":"https://github.com/nikomatsakis","followers_url":"https://api.github.com/users/nikomatsakis/followers","following_url":"https://api.github.com/users/nikomatsakis/following{/other_user}","gists_url":"https://api.github.com/users/nikomatsakis/gists{/gist_id}","starred_url":"https://api.github.com/users/nikomatsakis/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/nikomatsakis/subscriptions","organizations_url":"https://api.github.com/users/nikomatsakis/orgs","repos_url":"https://api.github.com/users/nikomatsakis/repos","events_url":"https://api.github.com/users/nikomatsakis/events{/privacy}","received_events_url":"https://api.github.com/users/nikomatsakis/received_events","type":"User","site_admin":false},"milestone":null,"comments":42,"created_at":"2015-01-28T21:05:08Z","updated_at":"2015-02-04T15:06:39Z","closed_at":null,"pull_request":{"url":"https://api.github.com/repos/rust-lang/rfcs/pulls/757","html_url":"https://github.com/rust-lang/rfcs/pull/757","diff_url":"https://github.com/rust-lang/rfcs/pull/757.diff","patch_url":"https://github.com/rust-lang/rfcs/pull/757.patch"},"body":"A mechanism for declaring an enum to be extensible, which prevents exhausting matching in downstream crates.\r\n\r\n[Rendered text.](https://github.com/nikomatsakis/rfcs/blob/extensible-enums-and-structs/text/0000-extensible-enums-and-structs.md)"},"comment":{"url":"https://api.github.com/repos/rust-lang/rfcs/issues/comments/72870514","html_url":"https://github.com/rust-lang/rfcs/pull/757#issuecomment-72870514","issue_url":"https://api.github.com/repos/rust-lang/rfcs/issues/757","id":72870514,"user":{"login":"Manishearth","id":1617736,"avatar_url":"https://avatars.githubusercontent.com/u/1617736?v=3","gravatar_id":"","url":"https://api.github.com/users/Manishearth","html_url":"https://github.com/Manishearth","followers_url":"https://api.github.com/users/Manishearth/followers","following_url":"https://api.github.com/users/Manishearth/following{/other_user}","gists_url":"https://api.github.com/users/Manishearth/gists{/gist_id}","starred_url":"https://api.github.com/users/Manishearth/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/Manishearth/subscriptions","organizations_url":"https://api.github.com/users/Manishearth/orgs","repos_url":"https://api.github.com/users/Manishearth/repos","events_url":"https://api.github.com/users/Manishearth/events{/privacy}","received_events_url":"https://api.github.com/users/Manishearth/received_events","type":"User","site_admin":false},"created_at":"2015-02-04T15:06:39Z","updated_at":"2015-02-04T15:06:39Z","body":"@nikomatsakis Reordering enum variants can probably be solved by sorting them, however with extensible enums, that doesn't work so well unless the author sticks to some scheme of annotations on the variants (stability attributes work here, since we can just sort by version first and then alphabetically/whatever). `#[repr(sorted)]` would be one way of doing this.\r\n\r\nStill has the size issue though. `#[extensible(max_size=foo)] enum Bar{...}` is one hacky way of solving this.\r\n\r\nBut I agree that binary incompatibilities isn't something we need to be worried about at the moment. Eventually we should have some form of ABI stabilization, but right now that seems far off."}}