{"action":"created","comment":{"url":"https://api.github.com/repos/rust-rfcs/unsafe-code-guidelines/pulls/comments/227473977","pull_request_review_id":167523695,"id":227473977,"node_id":"MDI0OlB1bGxSZXF1ZXN0UmV2aWV3Q29tbWVudDIyNzQ3Mzk3Nw==","diff_hunk":"@@ -0,0 +1,349 @@\n+# Representation of structs and tuples\n+\n+**Disclaimer:** This chapter represents the consensus from issues\n+[#11] and [#12].  The statements in here are not (yet) \"guaranteed\"\n+not to change until an RFC ratifies them.\n+\n+[#11]: https://github.com/rust-rfcs/unsafe-code-guidelines/issues/11\n+[#12]: https://github.com/rust-rfcs/unsafe-code-guidelines/issues/12\n+\n+## Tuple types\n+\n+In general, an anonymous tuple type `(T1..Tn)` of arity N is laid out\n+\"as if\" there were a corresponding tuple struct declared in libcore:\n+\n+```rust\n+#[repr(Rust)]\n+struct TupleN<P1..Pn:?Sized>(P1..Pn);\n+```\n+\n+In this case, `(T1..Tn)` would be compatible with `TupleN<T1..Tn>`.\n+As discussed below, this generally means that the compiler is **free\n+to re-order field layout** as it wishes. Thus, if you would like a\n+guaranteed layout from a tuple, you are generally advised to create a\n+named struct with a `#[repr(C)]` annotation (see [the section on\n+structs for more details](#structs)).\n+\n+Note that the final element of a tuple (`Pn`) is marked as `?Sized` to\n+permit unsized tuple coercion -- this is implemented on nightly but is\n+currently unstable ([tracking issue][#42877]). In the future, we may\n+extend unsizing to other elements of tuples as well.\n+\n+[#42877]: https://github.com/rust-lang/rust/issues/42877\n+\n+### Other notes on tuples\n+\n+Some related discussion:\n+\n+- [RFC #1582](https://github.com/rust-lang/rfcs/pull/1582) proposed\n+  that tuple structs should have a \"nested representation\", where\n+  e.g. `(T1, T2, T3)` would in fact be laid out as `(T1, (T2,\n+  T3))`. The purpose of this was to permit variadic matching and so\n+  forth against some suffix of the struct. This RFC was not accepted,\n+  however. This lay out requires extra padding and seems somewhat\n+  surprising: it means that the layout of tuples and tuple structs\n+  would diverge significantly from structs with named fields.\n+\n+<a name=\"structs\"></a>\n+\n+## Struct types\n+\n+Structs come in two principle varieties:\n+\n+```rust\n+// Structs with named fields\n+struct Foo { f1: T1, .., fn: Tn }\n+\n+// Tuple structs\n+struct Foo(T1, .., Tn);\n+```\n+\n+In terms of their layout, tuple structs can be understood as\n+equivalent to a named struct with fields named `0..n-1`:\n+\n+```rust\n+struct Foo {\n+  0: T1,\n+  ...\n+  n-1: Tn\n+}\n+```\n+\n+(In fact, one may use such field names in patterns or in accessor\n+expressions like `foo.0`.)\n+\n+Structs can have various `#[repr]` flags that influence their layout:\n+\n+- `#[repr(Rust)]` -- the default.\n+- `#[repr(C)]` -- request C compatibility\n+- `#[repr(align(N))]` -- specify the alignment\n+- `#[repr(packed)]` -- request packed layout where fields are not internally aligned\n+- `#[repr(transparent)]` -- request that a \"wrapper struct\" be treated\n+  \"as if\" it were an instance of its field type when passed as an\n+  argument\n+\n+### Default layout (\"repr rust\")\n+\n+The default layout of structs is not specified. Effectively, the\n+compiler provdes a deterministic function per struct definition that\n+defines its layout. This function may as principle take as input the\n+entire input program. Therefore:","path":"reference/src/representation/structs-and-tuples.md","position":null,"original_position":90,"commit_id":"b0c86ea1b00150991ae97e6a79487d76a44a5a02","original_commit_id":"fbf35bf40dcca64c559fb5d0b1d2a394bc2606d8","user":{"login":"rkruppe","id":2311707,"node_id":"MDQ6VXNlcjIzMTE3MDc=","avatar_url":"https://avatars2.githubusercontent.com/u/2311707?v=4","gravatar_id":"","url":"https://api.github.com/users/rkruppe","html_url":"https://github.com/rkruppe","followers_url":"https://api.github.com/users/rkruppe/followers","following_url":"https://api.github.com/users/rkruppe/following{/other_user}","gists_url":"https://api.github.com/users/rkruppe/gists{/gist_id}","starred_url":"https://api.github.com/users/rkruppe/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/rkruppe/subscriptions","organizations_url":"https://api.github.com/users/rkruppe/orgs","repos_url":"https://api.github.com/users/rkruppe/repos","events_url":"https://api.github.com/users/rkruppe/events{/privacy}","received_events_url":"https://api.github.com/users/rkruppe/received_events","type":"User","site_admin":false},"body":"Ah, the updated version is good in that regard, thanks!","created_at":"2018-10-23T16:39:56Z","updated_at":"2018-10-23T16:39:56Z","html_url":"https://github.com/rust-rfcs/unsafe-code-guidelines/pull/31#discussion_r227473977","pull_request_url":"https://api.github.com/repos/rust-rfcs/unsafe-code-guidelines/pulls/31","author_association":"NONE","_links":{"self":{"href":"https://api.github.com/repos/rust-rfcs/unsafe-code-guidelines/pulls/comments/227473977"},"html":{"href":"https://github.com/rust-rfcs/unsafe-code-guidelines/pull/31#discussion_r227473977"},"pull_request":{"href":"https://api.github.com/repos/rust-rfcs/unsafe-code-guidelines/pulls/31"}},"in_reply_to_id":224588082},"pull_request":{"url":"https://api.github.com/repos/rust-rfcs/unsafe-code-guidelines/pulls/31","id":218130144,"node_id":"MDExOlB1bGxSZXF1ZXN0MjE4MTMwMTQ0","html_url":"https://github.com/rust-rfcs/unsafe-code-guidelines/pull/31","diff_url":"https://github.com/rust-rfcs/unsafe-code-guidelines/pull/31.diff","patch_url":"https://github.com/rust-rfcs/unsafe-code-guidelines/pull/31.patch","issue_url":"https://api.github.com/repos/rust-rfcs/unsafe-code-guidelines/issues/31","number":31,"state":"open","locked":false,"title":"add a stucts-and-tuples chapter","user":{"login":"nikomatsakis","id":155238,"node_id":"MDQ6VXNlcjE1NTIzOA==","avatar_url":"https://avatars0.githubusercontent.com/u/155238?v=4","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},"body":"Writes up what I believe to be the consensus around layout of structs and tuples. Suggestions very welcome!\r\n\r\nHere are some of the highlights:\r\n\r\n- Tuples are defined to be laid out as if there were a \"fresh generic struct\" for their arity. So `(T1...Tn)` is laid out the same as `TupleN<T1..Tn>` where `struct TupleN<P0..Pn>(P0..Pn)`.\r\n    - There is an exception for the case where all the types are the same (after lifetime erasure), in which case the layout is guaranteed to be compatible with `[T; N]`.\r\n- Tuple structs are laid out the same as \"named fields\".\r\n- `#[repr(Rust)]` structs (the default) have no particular layout guarantees. In particular, even if two `#[repr(Rust)]` structs have the fields of the same types, they are not guaranteed to be laid out in a compatible way. This is a conservative position that could be strengthened, though I personally now think it'd be better to \"opt-in\" to any such guarantees. I cover the pros and cons in the doc.\r\n- `#[repr(C)]`, `#[repr(align)]`, `#[repr(packed)]`, and `#[repr(transparent)]` are all discussed.\r\n\r\nFixes #11\r\nFixes #12 \r\nFixes #17","created_at":"2018-09-25T21:49:52Z","updated_at":"2018-10-23T16:39:56Z","closed_at":null,"merged_at":null,"merge_commit_sha":"66816eee2a69e63514187592528b3b0c1208790f","assignee":null,"assignees":[],"requested_reviewers":[],"requested_teams":[],"labels":[{"id":1087807811,"node_id":"MDU6TGFiZWwxMDg3ODA3ODEx","url":"https://api.github.com/repos/rust-rfcs/unsafe-code-guidelines/labels/final-comment-period","name":"final-comment-period","color":"d93f0b","default":false}],"milestone":null,"commits_url":"https://api.github.com/repos/rust-rfcs/unsafe-code-guidelines/pulls/31/commits","review_comments_url":"https://api.github.com/repos/rust-rfcs/unsafe-code-guidelines/pulls/31/comments","review_comment_url":"https://api.github.com/repos/rust-rfcs/unsafe-code-guidelines/pulls/comments{/number}","comments_url":"https://api.github.com/repos/rust-rfcs/unsafe-code-guidelines/issues/31/comments","statuses_url":"https://api.github.com/repos/rust-rfcs/unsafe-code-guidelines/statuses/b0c86ea1b00150991ae97e6a79487d76a44a5a02","head":{"label":"nikomatsakis:structs-and-tuples","ref":"structs-and-tuples","sha":"b0c86ea1b00150991ae97e6a79487d76a44a5a02","user":{"login":"nikomatsakis","id":155238,"node_id":"MDQ6VXNlcjE1NTIzOA==","avatar_url":"https://avatars0.githubusercontent.com/u/155238?v=4","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},"repo":{"id":145982879,"node_id":"MDEwOlJlcG9zaXRvcnkxNDU5ODI4Nzk=","name":"unsafe-code-guidelines","full_name":"nikomatsakis/unsafe-code-guidelines","private":false,"owner":{"login":"nikomatsakis","id":155238,"node_id":"MDQ6VXNlcjE1NTIzOA==","avatar_url":"https://avatars0.githubusercontent.com/u/155238?v=4","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},"html_url":"https://github.com/nikomatsakis/unsafe-code-guidelines","description":"Home for the Unsafe Code Guidelines effort.","fork":true,"url":"https://api.github.com/repos/nikomatsakis/unsafe-code-guidelines","forks_url":"https://api.github.com/repos/nikomatsakis/unsafe-code-guidelines/forks","keys_url":"https://api.github.com/repos/nikomatsakis/unsafe-code-guidelines/keys{/key_id}","collaborators_url":"https://api.github.com/repos/nikomatsakis/unsafe-code-guidelines/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/nikomatsakis/unsafe-code-guidelines/teams","hooks_url":"https://api.github.com/repos/nikomatsakis/unsafe-code-guidelines/hooks","issue_events_url":"https://api.github.com/repos/nikomatsakis/unsafe-code-guidelines/issues/events{/number}","events_url":"https://api.github.com/repos/nikomatsakis/unsafe-code-guidelines/events","assignees_url":"https://api.github.com/repos/nikomatsakis/unsafe-code-guidelines/assignees{/user}","branches_url":"https://api.github.com/repos/nikomatsakis/unsafe-code-guidelines/branches{/branch}","tags_url":"https://api.github.com/repos/nikomatsakis/unsafe-code-guidelines/tags","blobs_url":"https://api.github.com/repos/nikomatsakis/unsafe-code-guidelines/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/nikomatsakis/unsafe-code-guidelines/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/nikomatsakis/unsafe-code-guidelines/git/refs{/sha}","trees_url":"https://api.github.com/repos/nikomatsakis/unsafe-code-guidelines/git/trees{/sha}","statuses_url":"https://api.github.com/repos/nikomatsakis/unsafe-code-guidelines/statuses/{sha}","languages_url":"https://api.github.com/repos/nikomatsakis/unsafe-code-guidelines/languages","stargazers_url":"https://api.github.com/repos/nikomatsakis/unsafe-code-guidelines/stargazers","contributors_url":"https://api.github.com/repos/nikomatsakis/unsafe-code-guidelines/contributors","subscribers_url":"https://api.github.com/repos/nikomatsakis/unsafe-code-guidelines/subscribers","subscription_url":"https://api.github.com/repos/nikomatsakis/unsafe-code-guidelines/subscription","commits_url":"https://api.github.com/repos/nikomatsakis/unsafe-code-guidelines/commits{/sha}","git_commits_url":"https://api.github.com/repos/nikomatsakis/unsafe-code-guidelines/git/commits{/sha}","comments_url":"https://api.github.com/repos/nikomatsakis/unsafe-code-guidelines/comments{/number}","issue_comment_url":"https://api.github.com/repos/nikomatsakis/unsafe-code-guidelines/issues/comments{/number}","contents_url":"https://api.github.com/repos/nikomatsakis/unsafe-code-guidelines/contents/{+path}","compare_url":"https://api.github.com/repos/nikomatsakis/unsafe-code-guidelines/compare/{base}...{head}","merges_url":"https://api.github.com/repos/nikomatsakis/unsafe-code-guidelines/merges","archive_url":"https://api.github.com/repos/nikomatsakis/unsafe-code-guidelines/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/nikomatsakis/unsafe-code-guidelines/downloads","issues_url":"https://api.github.com/repos/nikomatsakis/unsafe-code-guidelines/issues{/number}","pulls_url":"https://api.github.com/repos/nikomatsakis/unsafe-code-guidelines/pulls{/number}","milestones_url":"https://api.github.com/repos/nikomatsakis/unsafe-code-guidelines/milestones{/number}","notifications_url":"https://api.github.com/repos/nikomatsakis/unsafe-code-guidelines/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/nikomatsakis/unsafe-code-guidelines/labels{/name}","releases_url":"https://api.github.com/repos/nikomatsakis/unsafe-code-guidelines/releases{/id}","deployments_url":"https://api.github.com/repos/nikomatsakis/unsafe-code-guidelines/deployments","created_at":"2018-08-24T11:24:20Z","updated_at":"2018-08-24T11:24:22Z","pushed_at":"2018-10-23T16:38:18Z","git_url":"git://github.com/nikomatsakis/unsafe-code-guidelines.git","ssh_url":"git@github.com:nikomatsakis/unsafe-code-guidelines.git","clone_url":"https://github.com/nikomatsakis/unsafe-code-guidelines.git","svn_url":"https://github.com/nikomatsakis/unsafe-code-guidelines","homepage":null,"size":54,"stargazers_count":0,"watchers_count":0,"language":null,"has_issues":false,"has_projects":true,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":0,"mirror_url":null,"archived":false,"open_issues_count":0,"license":null,"forks":0,"open_issues":0,"watchers":0,"default_branch":"master"}},"base":{"label":"rust-rfcs:master","ref":"master","sha":"431a3ac4640f281f326916760eb361e028ca6917","user":{"login":"rust-rfcs","id":40280837,"node_id":"MDEyOk9yZ2FuaXphdGlvbjQwMjgwODM3","avatar_url":"https://avatars3.githubusercontent.com/u/40280837?v=4","gravatar_id":"","url":"https://api.github.com/users/rust-rfcs","html_url":"https://github.com/rust-rfcs","followers_url":"https://api.github.com/users/rust-rfcs/followers","following_url":"https://api.github.com/users/rust-rfcs/following{/other_user}","gists_url":"https://api.github.com/users/rust-rfcs/gists{/gist_id}","starred_url":"https://api.github.com/users/rust-rfcs/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/rust-rfcs/subscriptions","organizations_url":"https://api.github.com/users/rust-rfcs/orgs","repos_url":"https://api.github.com/users/rust-rfcs/repos","events_url":"https://api.github.com/users/rust-rfcs/events{/privacy}","received_events_url":"https://api.github.com/users/rust-rfcs/received_events","type":"Organization","site_admin":false},"repo":{"id":139737011,"node_id":"MDEwOlJlcG9zaXRvcnkxMzk3MzcwMTE=","name":"unsafe-code-guidelines","full_name":"rust-rfcs/unsafe-code-guidelines","private":false,"owner":{"login":"rust-rfcs","id":40280837,"node_id":"MDEyOk9yZ2FuaXphdGlvbjQwMjgwODM3","avatar_url":"https://avatars3.githubusercontent.com/u/40280837?v=4","gravatar_id":"","url":"https://api.github.com/users/rust-rfcs","html_url":"https://github.com/rust-rfcs","followers_url":"https://api.github.com/users/rust-rfcs/followers","following_url":"https://api.github.com/users/rust-rfcs/following{/other_user}","gists_url":"https://api.github.com/users/rust-rfcs/gists{/gist_id}","starred_url":"https://api.github.com/users/rust-rfcs/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/rust-rfcs/subscriptions","organizations_url":"https://api.github.com/users/rust-rfcs/orgs","repos_url":"https://api.github.com/users/rust-rfcs/repos","events_url":"https://api.github.com/users/rust-rfcs/events{/privacy}","received_events_url":"https://api.github.com/users/rust-rfcs/received_events","type":"Organization","site_admin":false},"html_url":"https://github.com/rust-rfcs/unsafe-code-guidelines","description":"Home for the Unsafe Code Guidelines effort.","fork":false,"url":"https://api.github.com/repos/rust-rfcs/unsafe-code-guidelines","forks_url":"https://api.github.com/repos/rust-rfcs/unsafe-code-guidelines/forks","keys_url":"https://api.github.com/repos/rust-rfcs/unsafe-code-guidelines/keys{/key_id}","collaborators_url":"https://api.github.com/repos/rust-rfcs/unsafe-code-guidelines/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/rust-rfcs/unsafe-code-guidelines/teams","hooks_url":"https://api.github.com/repos/rust-rfcs/unsafe-code-guidelines/hooks","issue_events_url":"https://api.github.com/repos/rust-rfcs/unsafe-code-guidelines/issues/events{/number}","events_url":"https://api.github.com/repos/rust-rfcs/unsafe-code-guidelines/events","assignees_url":"https://api.github.com/repos/rust-rfcs/unsafe-code-guidelines/assignees{/user}","branches_url":"https://api.github.com/repos/rust-rfcs/unsafe-code-guidelines/branches{/branch}","tags_url":"https://api.github.com/repos/rust-rfcs/unsafe-code-guidelines/tags","blobs_url":"https://api.github.com/repos/rust-rfcs/unsafe-code-guidelines/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/rust-rfcs/unsafe-code-guidelines/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/rust-rfcs/unsafe-code-guidelines/git/refs{/sha}","trees_url":"https://api.github.com/repos/rust-rfcs/unsafe-code-guidelines/git/trees{/sha}","statuses_url":"https://api.github.com/repos/rust-rfcs/unsafe-code-guidelines/statuses/{sha}","languages_url":"https://api.github.com/repos/rust-rfcs/unsafe-code-guidelines/languages","stargazers_url":"https://api.github.com/repos/rust-rfcs/unsafe-code-guidelines/stargazers","contributors_url":"https://api.github.com/repos/rust-rfcs/unsafe-code-guidelines/contributors","subscribers_url":"https://api.github.com/repos/rust-rfcs/unsafe-code-guidelines/subscribers","subscription_url":"https://api.github.com/repos/rust-rfcs/unsafe-code-guidelines/subscription","commits_url":"https://api.github.com/repos/rust-rfcs/unsafe-code-guidelines/commits{/sha}","git_commits_url":"https://api.github.com/repos/rust-rfcs/unsafe-code-guidelines/git/commits{/sha}","comments_url":"https://api.github.com/repos/rust-rfcs/unsafe-code-guidelines/comments{/number}","issue_comment_url":"https://api.github.com/repos/rust-rfcs/unsafe-code-guidelines/issues/comments{/number}","contents_url":"https://api.github.com/repos/rust-rfcs/unsafe-code-guidelines/contents/{+path}","compare_url":"https://api.github.com/repos/rust-rfcs/unsafe-code-guidelines/compare/{base}...{head}","merges_url":"https://api.github.com/repos/rust-rfcs/unsafe-code-guidelines/merges","archive_url":"https://api.github.com/repos/rust-rfcs/unsafe-code-guidelines/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/rust-rfcs/unsafe-code-guidelines/downloads","issues_url":"https://api.github.com/repos/rust-rfcs/unsafe-code-guidelines/issues{/number}","pulls_url":"https://api.github.com/repos/rust-rfcs/unsafe-code-guidelines/pulls{/number}","milestones_url":"https://api.github.com/repos/rust-rfcs/unsafe-code-guidelines/milestones{/number}","notifications_url":"https://api.github.com/repos/rust-rfcs/unsafe-code-guidelines/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/rust-rfcs/unsafe-code-guidelines/labels{/name}","releases_url":"https://api.github.com/repos/rust-rfcs/unsafe-code-guidelines/releases{/id}","deployments_url":"https://api.github.com/repos/rust-rfcs/unsafe-code-guidelines/deployments","created_at":"2018-07-04T15:06:32Z","updated_at":"2018-10-23T05:05:38Z","pushed_at":"2018-10-23T16:38:20Z","git_url":"git://github.com/rust-rfcs/unsafe-code-guidelines.git","ssh_url":"git@github.com:rust-rfcs/unsafe-code-guidelines.git","clone_url":"https://github.com/rust-rfcs/unsafe-code-guidelines.git","svn_url":"https://github.com/rust-rfcs/unsafe-code-guidelines","homepage":null,"size":40,"stargazers_count":46,"watchers_count":46,"language":null,"has_issues":true,"has_projects":true,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":6,"mirror_url":null,"archived":false,"open_issues_count":26,"license":{"key":"other","name":"Other","spdx_id":"NOASSERTION","url":null,"node_id":"MDc6TGljZW5zZTA="},"forks":6,"open_issues":26,"watchers":46,"default_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/rust-rfcs/unsafe-code-guidelines/pulls/31"},"html":{"href":"https://github.com/rust-rfcs/unsafe-code-guidelines/pull/31"},"issue":{"href":"https://api.github.com/repos/rust-rfcs/unsafe-code-guidelines/issues/31"},"comments":{"href":"https://api.github.com/repos/rust-rfcs/unsafe-code-guidelines/issues/31/comments"},"review_comments":{"href":"https://api.github.com/repos/rust-rfcs/unsafe-code-guidelines/pulls/31/comments"},"review_comment":{"href":"https://api.github.com/repos/rust-rfcs/unsafe-code-guidelines/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/rust-rfcs/unsafe-code-guidelines/pulls/31/commits"},"statuses":{"href":"https://api.github.com/repos/rust-rfcs/unsafe-code-guidelines/statuses/b0c86ea1b00150991ae97e6a79487d76a44a5a02"}},"author_association":"COLLABORATOR"}}
{"actor":{"display_login":"rkruppe"}}