{"action":"created","comment":{"url":"https://api.github.com/repos/rust-lang/rfcs/pulls/comments/51167567","id":51167567,"diff_hunk":"@@ -0,0 +1,362 @@\n+- Feature Name: placement_traits\n+- Start Date: 2015-12-21\n+- RFC PR: (leave this empty)\n+- Rust Issue: (leave this empty)\n+\n+# Summary\n+[summary]: #summary\n+\n+This RFC amends RFC #0809 to reduce the number of traits involved, take\n+allocators into account, and pin down the story on DST placement.\n+\n+## Traits\n+\n+There are now four traits:\n+\n+1. `Placer` -- Placement in syntax:  `let owner = PLACE <- value`.\n+2. `Boxer` -- Box syntax: `let boxed: Box<_> = box value`.\n+3. `Place` -- An \"out\" pointer.\n+4. `Allocate` -- A trait that allows boxing and placing into `Allocator`s.\n+\n+## Allocators\n+\n+This RFC adds a new `Allocate` trait that can be implemented by any type that\n+takes an allocator. Implementing `Allocate` automatically implements `Boxer`\n+for boxing into allocators that implement `Default` and allows the type to be\n+allocated with a custom allocator using the `ALLOCATOR <- value` syntax.\n+\n+## DSTs\n+\n+`Boxer::make_place` and `Placer::make_place` are bounded by `Data: Sized` to\n+future proof against DST placement.\n+\n+Furthermore, this RFC explicitly defines the guarantees of when/where\n+`Placer::make_place` will be called.\n+\n+# Detailed design\n+[design]: #detailed-design\n+\n+The new trait hierarchy is as follows:\n+\n+```rust\n+/// Interface to implementations of  `PLACE <- EXPR`.\n+///\n+/// `PLACE <- EXPR` effectively desugars into:\n+///\n+/// ```rust,ignore\n+/// let p = PLACE;\n+/// let mut place = Placer::make_place(p);\n+/// let raw_place = Place::pointer(&mut place);\n+/// let value = EXPR;\n+/// unsafe {\n+///     std::ptr::write(raw_place, value);\n+///     Place::finalize(place)\n+/// }\n+/// ```\n+///\n+/// The type of `PLACE <- EXPR` is derived from the type of `PLACE` and the\n+/// context. If the type of `PLACE` is `P`, then the final type of the\n+/// expression is some owner such that `P` implements `Placer<typeof(EXPR), Owner>`.\n+///\n+/// Values for types implementing this trait usually are transient\n+/// intermediate values (e.g. the return value of `Vec::back`)\n+/// or `Copy`, since the `make_place` method takes `self` by value.\n+pub trait Placer<Data: ?Sized, Owner> {\n+    /// `Place` is the intermedate agent guarding the\n+    /// uninitialized state for `Data`.\n+    type Place: Place<Data=Data, Owner=Owner>;\n+\n+    /// Creates a fresh place from `self`.\n+    fn make_place(self) -> Self::Place\n+        where Data: Sized;\n+}\n+\n+/// Core trait for the `box EXPR` form.\n+///\n+/// `box EXPR` effectively desugars into:\n+///\n+/// ```rust,ignore\n+/// let mut place = Boxer::make_place();\n+/// let raw_place = Place::pointer(&mut place);\n+/// let value = EXPR;\n+/// unsafe {\n+///     ::std::ptr::write(raw_place, value);\n+///     Place::finalize(place)\n+/// }\n+/// ```\n+///\n+/// The type of `box EXPR` is supplied from its surrounding\n+/// context; in the above expansion, the result type `T` is used\n+/// to determine which implementation of `Boxer` to use, and that\n+/// `<T as Boxer>` in turn dictates which implementation of `Place` to use\n+/// (specifically, `<T as Boxer<typeof(EXPR)>>::Place`).\n+pub trait Boxer<Data: ?Sized>: Sized {\n+    /// The place that will negotiate the storage of the data.\n+    type Place: Place<Data=Data, Owner=Self>;\n+\n+    /// Creates a globally fresh place.\n+    fn make_place() -> Self::Place\n+        where Data: Sized;\n+}\n+\n+/// Both `PLACE <- EXPR` and `box EXPR` desugar into expressions\n+/// that allocate an intermediate \"place\" that holds uninitialized\n+/// state.  The desugaring evaluates EXPR, and writes the result at\n+/// the address returned by the `pointer` method of this trait.\n+///\n+/// A `Place` can be thought of as a special representation for a\n+/// hypothetical `&uninit` reference (which Rust cannot currently\n+/// express directly). That is, it represents a pointer to\n+/// uninitialized storage.\n+///\n+/// The client is responsible for two steps: First, initializing the\n+/// payload (it can access its address via `pointer`). Second,\n+/// converting the agent to an instance of the owning pointer, via the\n+/// appropriate `finalize` method.\n+///\n+/// If evaluating EXPR fails, then the destructor for the\n+/// implementation of Place is run to clean up any intermediate state\n+/// (e.g. deallocate box storage, pop a stack frame, etc).\n+pub unsafe trait Place {\n+    /// `Owner` is the type of the end value of both `PLACE <- EXPR` and\n+    /// `box EXPR`.\n+    ///\n+    /// Note that when `PLACE <- EXPR` is solely used for side-effecting an\n+    /// existing data-structure, e.g. `Vec::back`, then `Owner` need not carry\n+    /// any information at all (e.g. it can be the unit type `()` in that\n+    /// case).\n+    type Owner;\n+\n+    /// `Data` is the type of the value to be emplaced.\n+    type Data: ?Sized;\n+\n+    /// Returns the address where the input value will be written.\n+    /// Note that the data at this address is generally uninitialized,\n+    /// and thus one should use `ptr::write` for initializing it.\n+    fn pointer(&mut self) -> *mut Self::Data;\n+\n+    /// Converts self into the final value, shifting deallocation/cleanup\n+    /// responsibilities (if any remain), over to the returned instance of\n+    /// `Owner` and forgetting self.\n+    unsafe fn finalize(self) -> Self::Owner;\n+}\n+\n+/// All types implemeinting this trait can be constructed using using the `box`\n+/// keyword (iff the associated `Allocator` implements `Default`) or by placing\n+/// (`<-`) a value into an instance of the associated `Allocator`.\n+///\n+/// ```norun\n+/// let boxed1: Box<i32, SomeAllocator> = box 1; // where SomeAllocator: Default\n+/// let boxed2: Box<i32, SomeAllocator> = SomeAllocator::new() <- 1;\n+/// ```\n+pub trait Allocate<Data: ?Sized>: Sized {\n+    /// The place that will negotiate the storage of the data.\n+    type Place: Place<Data=Data, Owner=Self>;\n+    /// The allocator for this type.\n+    type Allocator: Allocator;\n+\n+    /// Create a `Place` for `Self` with the given `Allocator`.\n+    fn allocate(with: Self::Allocator) -> Self::Place\n+        where Data: Sized;\n+}\n+\n+```\n+\n+Additionally, we define the following blanket impls to allow anything\n+implementing `Allocate` to be allocated in any `Allocator`. When specialization\n+lands, these can be marked default.\n+\n+```rust\n+// Allows `let owner: T = ALLOCATOR <- thing;`\n+impl<T, D, A> Placer<D, A> for T\n+    where T: Allocator,\n+          A: Allocate<D, Allocator=T>\n+{\n+    type Place = A::Place;\n+\n+    fn make_place(self) -> Self::Place\n+        where Self: Sized\n+    {\n+        A::allocate(self)\n+    }\n+}\n+\n+// Allows `let owner: T = box thing;`\n+impl<A, D> Boxer<D> for A\n+    where A: Allocate<D>,\n+          A::Allocator: Default\n+{\n+    type Place = A::Place;\n+\n+    fn make_place() -> Self::Place\n+        where Self: Sized\n+    {\n+        A::allocate(Default::default())\n+    }\n+}\n+```\n+\n+Finally, to support DST placement, this RFC explicitly loosens the placement\n+protocol guarantees. Specifically, the place in placement in/new is not\n+guaranteed to be allocated before the evaluation of the expression on the right\n+hand side. DST placement needs this to be able to compute the size of the DST\n+before allocating the place. This means that, in the following cases, whether or\n+not the `Box` is ever allocated is explicitly undefined:","path":"text/0000-placement-traits.md","position":null,"original_position":204,"commit_id":"55aeff8941b5c1a72e27431273dae933a40226e2","original_commit_id":"42cfbd056514dd2f54f07fc42a05fe0873a9f95c","user":{"login":"Stebalien","id":310393,"avatar_url":"https://avatars.githubusercontent.com/u/310393?v=3","gravatar_id":"","url":"https://api.github.com/users/Stebalien","html_url":"https://github.com/Stebalien","followers_url":"https://api.github.com/users/Stebalien/followers","following_url":"https://api.github.com/users/Stebalien/following{/other_user}","gists_url":"https://api.github.com/users/Stebalien/gists{/gist_id}","starred_url":"https://api.github.com/users/Stebalien/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/Stebalien/subscriptions","organizations_url":"https://api.github.com/users/Stebalien/orgs","repos_url":"https://api.github.com/users/Stebalien/repos","events_url":"https://api.github.com/users/Stebalien/events{/privacy}","received_events_url":"https://api.github.com/users/Stebalien/received_events","type":"User","site_admin":false},"body":"Sorry about that. What I mean and what I say are not always the same thing. Does it make more sense now?","created_at":"2016-01-28T18:49:25Z","updated_at":"2016-01-28T18:49:25Z","html_url":"https://github.com/rust-lang/rfcs/pull/1426#discussion_r51167567","pull_request_url":"https://api.github.com/repos/rust-lang/rfcs/pulls/1426","_links":{"self":{"href":"https://api.github.com/repos/rust-lang/rfcs/pulls/comments/51167567"},"html":{"href":"https://github.com/rust-lang/rfcs/pull/1426#discussion_r51167567"},"pull_request":{"href":"https://api.github.com/repos/rust-lang/rfcs/pulls/1426"}}},"pull_request":{"url":"https://api.github.com/repos/rust-lang/rfcs/pulls/1426","id":54509086,"html_url":"https://github.com/rust-lang/rfcs/pull/1426","diff_url":"https://github.com/rust-lang/rfcs/pull/1426.diff","patch_url":"https://github.com/rust-lang/rfcs/pull/1426.patch","issue_url":"https://api.github.com/repos/rust-lang/rfcs/issues/1426","number":1426,"state":"open","locked":false,"title":"Placement in/box refinement","user":{"login":"Stebalien","id":310393,"avatar_url":"https://avatars.githubusercontent.com/u/310393?v=3","gravatar_id":"","url":"https://api.github.com/users/Stebalien","html_url":"https://github.com/Stebalien","followers_url":"https://api.github.com/users/Stebalien/followers","following_url":"https://api.github.com/users/Stebalien/following{/other_user}","gists_url":"https://api.github.com/users/Stebalien/gists{/gist_id}","starred_url":"https://api.github.com/users/Stebalien/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/Stebalien/subscriptions","organizations_url":"https://api.github.com/users/Stebalien/orgs","repos_url":"https://api.github.com/users/Stebalien/repos","events_url":"https://api.github.com/users/Stebalien/events{/privacy}","received_events_url":"https://api.github.com/users/Stebalien/received_events","type":"User","site_admin":false},"body":"Supersedes #1401\r\n\r\n[rendered](https://github.com/Stebalien/rfcs/blob/placement-traits/text/0000-placement-traits.md)","created_at":"2015-12-23T21:40:06Z","updated_at":"2016-01-28T18:49:25Z","closed_at":null,"merged_at":null,"merge_commit_sha":"85c89a53f76acff0d2ee27bdf4ea60b6978c0480","assignee":{"login":"pnkfelix","id":173127,"avatar_url":"https://avatars.githubusercontent.com/u/173127?v=3","gravatar_id":"","url":"https://api.github.com/users/pnkfelix","html_url":"https://github.com/pnkfelix","followers_url":"https://api.github.com/users/pnkfelix/followers","following_url":"https://api.github.com/users/pnkfelix/following{/other_user}","gists_url":"https://api.github.com/users/pnkfelix/gists{/gist_id}","starred_url":"https://api.github.com/users/pnkfelix/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/pnkfelix/subscriptions","organizations_url":"https://api.github.com/users/pnkfelix/orgs","repos_url":"https://api.github.com/users/pnkfelix/repos","events_url":"https://api.github.com/users/pnkfelix/events{/privacy}","received_events_url":"https://api.github.com/users/pnkfelix/received_events","type":"User","site_admin":false},"milestone":null,"commits_url":"https://api.github.com/repos/rust-lang/rfcs/pulls/1426/commits","review_comments_url":"https://api.github.com/repos/rust-lang/rfcs/pulls/1426/comments","review_comment_url":"https://api.github.com/repos/rust-lang/rfcs/pulls/comments{/number}","comments_url":"https://api.github.com/repos/rust-lang/rfcs/issues/1426/comments","statuses_url":"https://api.github.com/repos/rust-lang/rfcs/statuses/55aeff8941b5c1a72e27431273dae933a40226e2","head":{"label":"Stebalien:placement-traits","ref":"placement-traits","sha":"55aeff8941b5c1a72e27431273dae933a40226e2","user":{"login":"Stebalien","id":310393,"avatar_url":"https://avatars.githubusercontent.com/u/310393?v=3","gravatar_id":"","url":"https://api.github.com/users/Stebalien","html_url":"https://github.com/Stebalien","followers_url":"https://api.github.com/users/Stebalien/followers","following_url":"https://api.github.com/users/Stebalien/following{/other_user}","gists_url":"https://api.github.com/users/Stebalien/gists{/gist_id}","starred_url":"https://api.github.com/users/Stebalien/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/Stebalien/subscriptions","organizations_url":"https://api.github.com/users/Stebalien/orgs","repos_url":"https://api.github.com/users/Stebalien/repos","events_url":"https://api.github.com/users/Stebalien/events{/privacy}","received_events_url":"https://api.github.com/users/Stebalien/received_events","type":"User","site_admin":false},"repo":{"id":31559234,"name":"rfcs","full_name":"Stebalien/rfcs","owner":{"login":"Stebalien","id":310393,"avatar_url":"https://avatars.githubusercontent.com/u/310393?v=3","gravatar_id":"","url":"https://api.github.com/users/Stebalien","html_url":"https://github.com/Stebalien","followers_url":"https://api.github.com/users/Stebalien/followers","following_url":"https://api.github.com/users/Stebalien/following{/other_user}","gists_url":"https://api.github.com/users/Stebalien/gists{/gist_id}","starred_url":"https://api.github.com/users/Stebalien/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/Stebalien/subscriptions","organizations_url":"https://api.github.com/users/Stebalien/orgs","repos_url":"https://api.github.com/users/Stebalien/repos","events_url":"https://api.github.com/users/Stebalien/events{/privacy}","received_events_url":"https://api.github.com/users/Stebalien/received_events","type":"User","site_admin":false},"private":false,"html_url":"https://github.com/Stebalien/rfcs","description":"RFCs for changes to Rust","fork":true,"url":"https://api.github.com/repos/Stebalien/rfcs","forks_url":"https://api.github.com/repos/Stebalien/rfcs/forks","keys_url":"https://api.github.com/repos/Stebalien/rfcs/keys{/key_id}","collaborators_url":"https://api.github.com/repos/Stebalien/rfcs/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/Stebalien/rfcs/teams","hooks_url":"https://api.github.com/repos/Stebalien/rfcs/hooks","issue_events_url":"https://api.github.com/repos/Stebalien/rfcs/issues/events{/number}","events_url":"https://api.github.com/repos/Stebalien/rfcs/events","assignees_url":"https://api.github.com/repos/Stebalien/rfcs/assignees{/user}","branches_url":"https://api.github.com/repos/Stebalien/rfcs/branches{/branch}","tags_url":"https://api.github.com/repos/Stebalien/rfcs/tags","blobs_url":"https://api.github.com/repos/Stebalien/rfcs/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/Stebalien/rfcs/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/Stebalien/rfcs/git/refs{/sha}","trees_url":"https://api.github.com/repos/Stebalien/rfcs/git/trees{/sha}","statuses_url":"https://api.github.com/repos/Stebalien/rfcs/statuses/{sha}","languages_url":"https://api.github.com/repos/Stebalien/rfcs/languages","stargazers_url":"https://api.github.com/repos/Stebalien/rfcs/stargazers","contributors_url":"https://api.github.com/repos/Stebalien/rfcs/contributors","subscribers_url":"https://api.github.com/repos/Stebalien/rfcs/subscribers","subscription_url":"https://api.github.com/repos/Stebalien/rfcs/subscription","commits_url":"https://api.github.com/repos/Stebalien/rfcs/commits{/sha}","git_commits_url":"https://api.github.com/repos/Stebalien/rfcs/git/commits{/sha}","comments_url":"https://api.github.com/repos/Stebalien/rfcs/comments{/number}","issue_comment_url":"https://api.github.com/repos/Stebalien/rfcs/issues/comments{/number}","contents_url":"https://api.github.com/repos/Stebalien/rfcs/contents/{+path}","compare_url":"https://api.github.com/repos/Stebalien/rfcs/compare/{base}...{head}","merges_url":"https://api.github.com/repos/Stebalien/rfcs/merges","archive_url":"https://api.github.com/repos/Stebalien/rfcs/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/Stebalien/rfcs/downloads","issues_url":"https://api.github.com/repos/Stebalien/rfcs/issues{/number}","pulls_url":"https://api.github.com/repos/Stebalien/rfcs/pulls{/number}","milestones_url":"https://api.github.com/repos/Stebalien/rfcs/milestones{/number}","notifications_url":"https://api.github.com/repos/Stebalien/rfcs/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/Stebalien/rfcs/labels{/name}","releases_url":"https://api.github.com/repos/Stebalien/rfcs/releases{/id}","deployments_url":"https://api.github.com/repos/Stebalien/rfcs/deployments","created_at":"2015-03-02T19:41:53Z","updated_at":"2015-02-28T22:58:04Z","pushed_at":"2016-01-28T18:47:54Z","git_url":"git://github.com/Stebalien/rfcs.git","ssh_url":"git@github.com:Stebalien/rfcs.git","clone_url":"https://github.com/Stebalien/rfcs.git","svn_url":"https://github.com/Stebalien/rfcs","homepage":"","size":2457,"stargazers_count":0,"watchers_count":0,"language":null,"has_issues":false,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":0,"mirror_url":null,"open_issues_count":0,"forks":0,"open_issues":0,"watchers":0,"default_branch":"master"}},"base":{"label":"rust-lang:master","ref":"master","sha":"3a16a14ca5ed1100b4b76c303e97774dfe765f26","user":{"login":"rust-lang","id":5430905,"avatar_url":"https://avatars.githubusercontent.com/u/5430905?v=3","gravatar_id":"","url":"https://api.github.com/users/rust-lang","html_url":"https://github.com/rust-lang","followers_url":"https://api.github.com/users/rust-lang/followers","following_url":"https://api.github.com/users/rust-lang/following{/other_user}","gists_url":"https://api.github.com/users/rust-lang/gists{/gist_id}","starred_url":"https://api.github.com/users/rust-lang/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/rust-lang/subscriptions","organizations_url":"https://api.github.com/users/rust-lang/orgs","repos_url":"https://api.github.com/users/rust-lang/repos","events_url":"https://api.github.com/users/rust-lang/events{/privacy}","received_events_url":"https://api.github.com/users/rust-lang/received_events","type":"Organization","site_admin":false},"repo":{"id":17527989,"name":"rfcs","full_name":"rust-lang/rfcs","owner":{"login":"rust-lang","id":5430905,"avatar_url":"https://avatars.githubusercontent.com/u/5430905?v=3","gravatar_id":"","url":"https://api.github.com/users/rust-lang","html_url":"https://github.com/rust-lang","followers_url":"https://api.github.com/users/rust-lang/followers","following_url":"https://api.github.com/users/rust-lang/following{/other_user}","gists_url":"https://api.github.com/users/rust-lang/gists{/gist_id}","starred_url":"https://api.github.com/users/rust-lang/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/rust-lang/subscriptions","organizations_url":"https://api.github.com/users/rust-lang/orgs","repos_url":"https://api.github.com/users/rust-lang/repos","events_url":"https://api.github.com/users/rust-lang/events{/privacy}","received_events_url":"https://api.github.com/users/rust-lang/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/rust-lang/rfcs","description":"RFCs for changes to Rust","fork":false,"url":"https://api.github.com/repos/rust-lang/rfcs","forks_url":"https://api.github.com/repos/rust-lang/rfcs/forks","keys_url":"https://api.github.com/repos/rust-lang/rfcs/keys{/key_id}","collaborators_url":"https://api.github.com/repos/rust-lang/rfcs/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/rust-lang/rfcs/teams","hooks_url":"https://api.github.com/repos/rust-lang/rfcs/hooks","issue_events_url":"https://api.github.com/repos/rust-lang/rfcs/issues/events{/number}","events_url":"https://api.github.com/repos/rust-lang/rfcs/events","assignees_url":"https://api.github.com/repos/rust-lang/rfcs/assignees{/user}","branches_url":"https://api.github.com/repos/rust-lang/rfcs/branches{/branch}","tags_url":"https://api.github.com/repos/rust-lang/rfcs/tags","blobs_url":"https://api.github.com/repos/rust-lang/rfcs/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/rust-lang/rfcs/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/rust-lang/rfcs/git/refs{/sha}","trees_url":"https://api.github.com/repos/rust-lang/rfcs/git/trees{/sha}","statuses_url":"https://api.github.com/repos/rust-lang/rfcs/statuses/{sha}","languages_url":"https://api.github.com/repos/rust-lang/rfcs/languages","stargazers_url":"https://api.github.com/repos/rust-lang/rfcs/stargazers","contributors_url":"https://api.github.com/repos/rust-lang/rfcs/contributors","subscribers_url":"https://api.github.com/repos/rust-lang/rfcs/subscribers","subscription_url":"https://api.github.com/repos/rust-lang/rfcs/subscription","commits_url":"https://api.github.com/repos/rust-lang/rfcs/commits{/sha}","git_commits_url":"https://api.github.com/repos/rust-lang/rfcs/git/commits{/sha}","comments_url":"https://api.github.com/repos/rust-lang/rfcs/comments{/number}","issue_comment_url":"https://api.github.com/repos/rust-lang/rfcs/issues/comments{/number}","contents_url":"https://api.github.com/repos/rust-lang/rfcs/contents/{+path}","compare_url":"https://api.github.com/repos/rust-lang/rfcs/compare/{base}...{head}","merges_url":"https://api.github.com/repos/rust-lang/rfcs/merges","archive_url":"https://api.github.com/repos/rust-lang/rfcs/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/rust-lang/rfcs/downloads","issues_url":"https://api.github.com/repos/rust-lang/rfcs/issues{/number}","pulls_url":"https://api.github.com/repos/rust-lang/rfcs/pulls{/number}","milestones_url":"https://api.github.com/repos/rust-lang/rfcs/milestones{/number}","notifications_url":"https://api.github.com/repos/rust-lang/rfcs/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/rust-lang/rfcs/labels{/name}","releases_url":"https://api.github.com/repos/rust-lang/rfcs/releases{/id}","deployments_url":"https://api.github.com/repos/rust-lang/rfcs/deployments","created_at":"2014-03-07T21:29:00Z","updated_at":"2016-01-28T14:38:21Z","pushed_at":"2016-01-28T18:47:55Z","git_url":"git://github.com/rust-lang/rfcs.git","ssh_url":"git@github.com:rust-lang/rfcs.git","clone_url":"https://github.com/rust-lang/rfcs.git","svn_url":"https://github.com/rust-lang/rfcs","homepage":"","size":4608,"stargazers_count":545,"watchers_count":545,"language":null,"has_issues":true,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":261,"mirror_url":null,"open_issues_count":651,"forks":261,"open_issues":651,"watchers":545,"default_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/rust-lang/rfcs/pulls/1426"},"html":{"href":"https://github.com/rust-lang/rfcs/pull/1426"},"issue":{"href":"https://api.github.com/repos/rust-lang/rfcs/issues/1426"},"comments":{"href":"https://api.github.com/repos/rust-lang/rfcs/issues/1426/comments"},"review_comments":{"href":"https://api.github.com/repos/rust-lang/rfcs/pulls/1426/comments"},"review_comment":{"href":"https://api.github.com/repos/rust-lang/rfcs/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/rust-lang/rfcs/pulls/1426/commits"},"statuses":{"href":"https://api.github.com/repos/rust-lang/rfcs/statuses/55aeff8941b5c1a72e27431273dae933a40226e2"}}}}