{"action":"created","comment":{"url":"https://api.github.com/repos/rust-lang/rust/pulls/comments/24126565","id":24126565,"diff_hunk":"@@ -0,0 +1,1474 @@\n+// Copyright 2015 The Rust Project Developers. See the COPYRIGHT\n+// file at the top-level directory of this distribution and at\n+// http://rust-lang.org/COPYRIGHT.\n+//\n+// Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or\n+// http://www.apache.org/licenses/LICENSE-2.0> or the MIT license\n+// <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your\n+// option. This file may not be copied, modified, or distributed\n+// except according to those terms.\n+\n+//! Filesystem manipulation operations\n+//!\n+//! This module contains basic methods to manipulate the contents of the local\n+//! filesystem. All methods in this module operate reasonable across all\n+//! supported platforms, and extra functionality for platform-specific features\n+//! can be found in the extension traits of `std::os::$platform`.\n+\n+#![unstable(feature = \"fs\")]\n+\n+use core::prelude::*;\n+\n+use io::{self, Error, ErrorKind, SeekFrom, Seek, Read, Write};\n+use path::{AsPath, Path, PathBuf};\n+use sys::fs2 as fs_imp;\n+use sys_common::{AsInnerMut, FromInner};\n+use vec::Vec;\n+\n+/// A reference to an open file on the filesystem.\n+///\n+/// An instance of a `File` can be read and/or written depending on what options\n+/// it was opened with. Files also implement `Seek` to alter the logical cursor\n+/// that the file contains internally.\n+///\n+/// # Example\n+///\n+/// ```no_run\n+/// use std::io::prelude::*;\n+/// use std::fs::File;\n+///\n+/// let mut f = File::create(\"foo.txt\").unwrap();\n+/// f.write_all(b\"Hello, world!\").unwrap();\n+///\n+/// let mut f = File::open(\"foo.txt\").unwrap();\n+/// let mut s = String::new();\n+/// f.read_to_string(&mut s).unwrap();\n+/// assert_eq!(s, \"Hello, world!\");\n+/// ```\n+pub struct File {\n+    inner: fs_imp::File,\n+    path: PathBuf,\n+}\n+\n+/// Metadata information about a file.\n+///\n+/// This structure is returned from the `file_attr` function or method and\n+/// represents known metadata about a file such as its permissions, size,\n+/// modification times, etc.\n+pub struct FileAttr(fs_imp::FileAttr);\n+\n+/// Iterator over the entries in a directory.\n+///\n+/// This iterator is returned from the `read_dir` function of this module and\n+/// will yield instances of `io::Result<DirEntry>`. Through a `DirEntry`\n+/// information like the entry's path and possibly other metadata can be\n+/// learned.\n+pub struct ReadDir(fs_imp::ReadDir);\n+\n+/// Entries returned by the `ReadDir` entry.\n+///\n+/// An instance of `DirEntry` represents an entry inside of a directory on the\n+/// filesystem. Each entry can be inspected via methods to learn about the full\n+/// path or possibly other metadata through per-platform extension traits.\n+pub struct DirEntry(fs_imp::DirEntry);\n+\n+/// Options and flags which can be passed to `File::open_opts`.\n+///\n+/// This builder exposes the ability to configure how a `File` is opened and\n+/// what operations are permitted on it if it is successfully open.\n+#[derive(Clone)]\n+pub struct OpenOptions(fs_imp::OpenOptions);\n+\n+/// Representation of the various permissions on a file.\n+///\n+/// This module only currently provides one bit of information, `readonly`,\n+/// which is exposed on all currently supported platforms. Unix-specific\n+/// functionality, such as mode bits, is available through the\n+/// `os::unix::FilePermissionsExt` trait.\n+#[derive(Clone, PartialEq, Eq, Debug)]\n+pub struct FilePermissions(fs_imp::FilePermissions);\n+\n+impl File {\n+    /// Open a file at `path` with the options specified by `opts`.\n+    ///\n+    /// # Error\n+    ///\n+    /// This function will return an error under a number of different\n+    /// circumstances, to include but not limited to:\n+    ///\n+    /// * Opening a file that does not exist with read access.\n+    /// * Attempting to open a file with access that the user lacks\n+    ///   permissions for\n+    /// * Filesystem-level errors (full disk, etc)\n+    pub fn open_opts<P: AsPath + ?Sized>(path: &P, opts: &OpenOptions)\n+                                         -> io::Result<File> {\n+        let path = path.as_path();\n+        let inner = try!(fs_imp::File::open(path, &opts.0));\n+\n+        // On *BSD systems, we can open a directory as a file and read from\n+        // it: fd=open(\"/tmp\", O_RDONLY); read(fd, buf, N); due to an old\n+        // tradition before the introduction of opendir(3).  We explicitly\n+        // reject it because there are few use cases.\n+        if cfg!(not(any(target_os = \"linux\", target_os = \"android\"))) &&\n+           try!(inner.file_attr()).is_dir() {\n+            Err(Error::new(ErrorKind::InvalidInput, \"is a directory\", None))\n+        } else {\n+            Ok(File { path: path.to_path_buf(), inner: inner })\n+        }\n+    }\n+\n+    /// Attempts to open a file in read-only mode.\n+    ///\n+    /// See the `File::open_opts` function for more details.\n+    ///\n+    /// # Errors\n+    ///\n+    /// This function will return an error if `path` does not already exist.\n+    /// Other errors may also be returned according to `File::open_opts`.\n+    pub fn open<P: AsPath + ?Sized>(path: &P) -> io::Result<File> {\n+        File::open_opts(path, OpenOptions::new().read(true))\n+    }\n+\n+    /// Creates a open a file in write-only mode.\n+    ///\n+    /// This method will attempt to open a new file, truncating it if it already\n+    /// exists.\n+    ///\n+    /// See the `File::open_opts` function for more details.\n+    pub fn create<P: AsPath + ?Sized>(path: &P) -> io::Result<File> {\n+        File::open_opts(path, OpenOptions::new().write(true).create(true)\n+                                                .truncate(true))\n+    }\n+\n+    /// Returns the original path that was used to open this file.\n+    pub fn path(&self) -> &Path {\n+        &*self.path\n+    }\n+\n+    /// Attempt to sync all OS-internal metadata to disk.\n+    ///\n+    /// This function will attempt to ensure that all in-core data reaches the\n+    /// filesystem before returning.\n+    pub fn sync_all(&mut self) -> io::Result<()> {\n+        self.inner.fsync()\n+    }\n+\n+    /// This function is similar to `sync_all`, except that it may not\n+    /// synchronize file metadata to the filesystem.\n+    ///\n+    /// This is intended for use cases that must synchronize content, but don't\n+    /// need the metadata on disk. The goal of this method is to reduce disk\n+    /// operations.\n+    ///\n+    /// Note that some platforms may simply implement this in terms of\n+    /// `sync_all`.\n+    pub fn sync_data(&mut self) -> io::Result<()> {\n+        self.inner.datasync()\n+    }\n+\n+    /// Either truncates or extends the underlying file, updating the size of\n+    /// this file to become `size`. This is equivalent to unix's `truncate`\n+    /// function.\n+    ///\n+    /// If the `size` is less than the current file's size, then the file will\n+    /// be shrunk. If it is greater than the current file's size, then the file\n+    /// will be extended to `size` and have all of the intermediate data filled\n+    /// in with 0s.\n+    pub fn truncate(&mut self, size: u64) -> io::Result<()> {\n+        self.inner.truncate(size)\n+    }\n+\n+    /// Queries information about the underlying file.\n+    pub fn file_attr(&self) -> io::Result<FileAttr> {\n+        self.inner.file_attr().map(FileAttr)\n+    }\n+}\n+\n+impl Read for File {\n+    fn read(&mut self, buf: &mut [u8]) -> io::Result<usize> {\n+        self.inner.read(buf)\n+    }\n+}\n+impl Write for File {\n+    fn write(&mut self, buf: &[u8]) -> io::Result<usize> {\n+        self.inner.write(buf)\n+    }\n+    fn flush(&mut self) -> io::Result<()> { self.inner.flush() }\n+}\n+impl Seek for File {\n+    fn seek(&mut self, pos: SeekFrom) -> io::Result<u64> {\n+        self.inner.seek(pos)\n+    }\n+}\n+\n+impl OpenOptions {","path":"src/libstd/fs.rs","position":185,"original_position":204,"commit_id":"e5a8d4aed0f701bc540d591be064ca2c7334dae8","original_commit_id":"3176305d8b4a63ac5e8bf88bacf531ddb003590e","user":{"login":"alexcrichton","id":64996,"avatar_url":"https://avatars.githubusercontent.com/u/64996?v=3","gravatar_id":"","url":"https://api.github.com/users/alexcrichton","html_url":"https://github.com/alexcrichton","followers_url":"https://api.github.com/users/alexcrichton/followers","following_url":"https://api.github.com/users/alexcrichton/following{/other_user}","gists_url":"https://api.github.com/users/alexcrichton/gists{/gist_id}","starred_url":"https://api.github.com/users/alexcrichton/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/alexcrichton/subscriptions","organizations_url":"https://api.github.com/users/alexcrichton/orgs","repos_url":"https://api.github.com/users/alexcrichton/repos","events_url":"https://api.github.com/users/alexcrichton/events{/privacy}","received_events_url":"https://api.github.com/users/alexcrichton/received_events","type":"User","site_admin":false},"body":"Added (and it looks a lot nicer!)\r\n\r\nI removed `File::open_opts` while I was at it.","created_at":"2015-02-04T22:32:19Z","updated_at":"2015-02-04T22:32:19Z","html_url":"https://github.com/rust-lang/rust/pull/21936#discussion_r24126565","pull_request_url":"https://api.github.com/repos/rust-lang/rust/pulls/21936","_links":{"self":{"href":"https://api.github.com/repos/rust-lang/rust/pulls/comments/24126565"},"html":{"href":"https://github.com/rust-lang/rust/pull/21936#discussion_r24126565"},"pull_request":{"href":"https://api.github.com/repos/rust-lang/rust/pulls/21936"}}},"pull_request":{"url":"https://api.github.com/repos/rust-lang/rust/pulls/21936","id":28652187,"html_url":"https://github.com/rust-lang/rust/pull/21936","diff_url":"https://github.com/rust-lang/rust/pull/21936.diff","patch_url":"https://github.com/rust-lang/rust/pull/21936.patch","issue_url":"https://api.github.com/repos/rust-lang/rust/issues/21936","number":21936,"state":"open","locked":false,"title":"std: Add a new `fs` module","user":{"login":"alexcrichton","id":64996,"avatar_url":"https://avatars.githubusercontent.com/u/64996?v=3","gravatar_id":"","url":"https://api.github.com/users/alexcrichton","html_url":"https://github.com/alexcrichton","followers_url":"https://api.github.com/users/alexcrichton/followers","following_url":"https://api.github.com/users/alexcrichton/following{/other_user}","gists_url":"https://api.github.com/users/alexcrichton/gists{/gist_id}","starred_url":"https://api.github.com/users/alexcrichton/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/alexcrichton/subscriptions","organizations_url":"https://api.github.com/users/alexcrichton/orgs","repos_url":"https://api.github.com/users/alexcrichton/repos","events_url":"https://api.github.com/users/alexcrichton/events{/privacy}","received_events_url":"https://api.github.com/users/alexcrichton/received_events","type":"User","site_admin":false},"body":"This commit is an implementation of [RFC 739][rfc] which adds a new `std::fs`\r\nmodule to the standard library. This module provides much of the same\r\nfunctionality as `std::old_io::fs` but it has many tweaked APIs as well as uses\r\nthe new `std::path` module.\r\n\r\n[rfc]: https://github.com/rust-lang/rfcs/pull/739","created_at":"2015-02-04T16:28:25Z","updated_at":"2015-02-04T22:32:20Z","closed_at":null,"merged_at":null,"merge_commit_sha":"f113c5c74efdf3eaf9707bdb7e24d98c4a7efd91","assignee":{"login":"aturon","id":709807,"avatar_url":"https://avatars.githubusercontent.com/u/709807?v=3","gravatar_id":"","url":"https://api.github.com/users/aturon","html_url":"https://github.com/aturon","followers_url":"https://api.github.com/users/aturon/followers","following_url":"https://api.github.com/users/aturon/following{/other_user}","gists_url":"https://api.github.com/users/aturon/gists{/gist_id}","starred_url":"https://api.github.com/users/aturon/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/aturon/subscriptions","organizations_url":"https://api.github.com/users/aturon/orgs","repos_url":"https://api.github.com/users/aturon/repos","events_url":"https://api.github.com/users/aturon/events{/privacy}","received_events_url":"https://api.github.com/users/aturon/received_events","type":"User","site_admin":false},"milestone":null,"commits_url":"https://api.github.com/repos/rust-lang/rust/pulls/21936/commits","review_comments_url":"https://api.github.com/repos/rust-lang/rust/pulls/21936/comments","review_comment_url":"https://api.github.com/repos/rust-lang/rust/pulls/comments/{number}","comments_url":"https://api.github.com/repos/rust-lang/rust/issues/21936/comments","statuses_url":"https://api.github.com/repos/rust-lang/rust/statuses/e5a8d4aed0f701bc540d591be064ca2c7334dae8","head":{"label":"alexcrichton:fsv2","ref":"fsv2","sha":"e5a8d4aed0f701bc540d591be064ca2c7334dae8","user":{"login":"alexcrichton","id":64996,"avatar_url":"https://avatars.githubusercontent.com/u/64996?v=3","gravatar_id":"","url":"https://api.github.com/users/alexcrichton","html_url":"https://github.com/alexcrichton","followers_url":"https://api.github.com/users/alexcrichton/followers","following_url":"https://api.github.com/users/alexcrichton/following{/other_user}","gists_url":"https://api.github.com/users/alexcrichton/gists{/gist_id}","starred_url":"https://api.github.com/users/alexcrichton/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/alexcrichton/subscriptions","organizations_url":"https://api.github.com/users/alexcrichton/orgs","repos_url":"https://api.github.com/users/alexcrichton/repos","events_url":"https://api.github.com/users/alexcrichton/events{/privacy}","received_events_url":"https://api.github.com/users/alexcrichton/received_events","type":"User","site_admin":false},"repo":{"id":7385331,"name":"rust","full_name":"alexcrichton/rust","owner":{"login":"alexcrichton","id":64996,"avatar_url":"https://avatars.githubusercontent.com/u/64996?v=3","gravatar_id":"","url":"https://api.github.com/users/alexcrichton","html_url":"https://github.com/alexcrichton","followers_url":"https://api.github.com/users/alexcrichton/followers","following_url":"https://api.github.com/users/alexcrichton/following{/other_user}","gists_url":"https://api.github.com/users/alexcrichton/gists{/gist_id}","starred_url":"https://api.github.com/users/alexcrichton/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/alexcrichton/subscriptions","organizations_url":"https://api.github.com/users/alexcrichton/orgs","repos_url":"https://api.github.com/users/alexcrichton/repos","events_url":"https://api.github.com/users/alexcrichton/events{/privacy}","received_events_url":"https://api.github.com/users/alexcrichton/received_events","type":"User","site_admin":false},"private":false,"html_url":"https://github.com/alexcrichton/rust","description":"a safe, concurrent, practical language","fork":true,"url":"https://api.github.com/repos/alexcrichton/rust","forks_url":"https://api.github.com/repos/alexcrichton/rust/forks","keys_url":"https://api.github.com/repos/alexcrichton/rust/keys{/key_id}","collaborators_url":"https://api.github.com/repos/alexcrichton/rust/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/alexcrichton/rust/teams","hooks_url":"https://api.github.com/repos/alexcrichton/rust/hooks","issue_events_url":"https://api.github.com/repos/alexcrichton/rust/issues/events{/number}","events_url":"https://api.github.com/repos/alexcrichton/rust/events","assignees_url":"https://api.github.com/repos/alexcrichton/rust/assignees{/user}","branches_url":"https://api.github.com/repos/alexcrichton/rust/branches{/branch}","tags_url":"https://api.github.com/repos/alexcrichton/rust/tags","blobs_url":"https://api.github.com/repos/alexcrichton/rust/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/alexcrichton/rust/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/alexcrichton/rust/git/refs{/sha}","trees_url":"https://api.github.com/repos/alexcrichton/rust/git/trees{/sha}","statuses_url":"https://api.github.com/repos/alexcrichton/rust/statuses/{sha}","languages_url":"https://api.github.com/repos/alexcrichton/rust/languages","stargazers_url":"https://api.github.com/repos/alexcrichton/rust/stargazers","contributors_url":"https://api.github.com/repos/alexcrichton/rust/contributors","subscribers_url":"https://api.github.com/repos/alexcrichton/rust/subscribers","subscription_url":"https://api.github.com/repos/alexcrichton/rust/subscription","commits_url":"https://api.github.com/repos/alexcrichton/rust/commits{/sha}","git_commits_url":"https://api.github.com/repos/alexcrichton/rust/git/commits{/sha}","comments_url":"https://api.github.com/repos/alexcrichton/rust/comments{/number}","issue_comment_url":"https://api.github.com/repos/alexcrichton/rust/issues/comments/{number}","contents_url":"https://api.github.com/repos/alexcrichton/rust/contents/{+path}","compare_url":"https://api.github.com/repos/alexcrichton/rust/compare/{base}...{head}","merges_url":"https://api.github.com/repos/alexcrichton/rust/merges","archive_url":"https://api.github.com/repos/alexcrichton/rust/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/alexcrichton/rust/downloads","issues_url":"https://api.github.com/repos/alexcrichton/rust/issues{/number}","pulls_url":"https://api.github.com/repos/alexcrichton/rust/pulls{/number}","milestones_url":"https://api.github.com/repos/alexcrichton/rust/milestones{/number}","notifications_url":"https://api.github.com/repos/alexcrichton/rust/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/alexcrichton/rust/labels{/name}","releases_url":"https://api.github.com/repos/alexcrichton/rust/releases{/id}","created_at":"2012-12-31T08:59:51Z","updated_at":"2014-12-22T16:32:12Z","pushed_at":"2015-02-04T22:31:03Z","git_url":"git://github.com/alexcrichton/rust.git","ssh_url":"git@github.com:alexcrichton/rust.git","clone_url":"https://github.com/alexcrichton/rust.git","svn_url":"https://github.com/alexcrichton/rust","homepage":"http://www.rust-lang.org","size":239411,"stargazers_count":1,"watchers_count":1,"language":"Rust","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":1,"default_branch":"incoming"}},"base":{"label":"rust-lang:master","ref":"master","sha":"3ae76d5c1cca83eff3a4716550da357ca2abcd21","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":724712,"name":"rust","full_name":"rust-lang/rust","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/rust","description":"a safe, concurrent, practical language","fork":false,"url":"https://api.github.com/repos/rust-lang/rust","forks_url":"https://api.github.com/repos/rust-lang/rust/forks","keys_url":"https://api.github.com/repos/rust-lang/rust/keys{/key_id}","collaborators_url":"https://api.github.com/repos/rust-lang/rust/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/rust-lang/rust/teams","hooks_url":"https://api.github.com/repos/rust-lang/rust/hooks","issue_events_url":"https://api.github.com/repos/rust-lang/rust/issues/events{/number}","events_url":"https://api.github.com/repos/rust-lang/rust/events","assignees_url":"https://api.github.com/repos/rust-lang/rust/assignees{/user}","branches_url":"https://api.github.com/repos/rust-lang/rust/branches{/branch}","tags_url":"https://api.github.com/repos/rust-lang/rust/tags","blobs_url":"https://api.github.com/repos/rust-lang/rust/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/rust-lang/rust/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/rust-lang/rust/git/refs{/sha}","trees_url":"https://api.github.com/repos/rust-lang/rust/git/trees{/sha}","statuses_url":"https://api.github.com/repos/rust-lang/rust/statuses/{sha}","languages_url":"https://api.github.com/repos/rust-lang/rust/languages","stargazers_url":"https://api.github.com/repos/rust-lang/rust/stargazers","contributors_url":"https://api.github.com/repos/rust-lang/rust/contributors","subscribers_url":"https://api.github.com/repos/rust-lang/rust/subscribers","subscription_url":"https://api.github.com/repos/rust-lang/rust/subscription","commits_url":"https://api.github.com/repos/rust-lang/rust/commits{/sha}","git_commits_url":"https://api.github.com/repos/rust-lang/rust/git/commits{/sha}","comments_url":"https://api.github.com/repos/rust-lang/rust/comments{/number}","issue_comment_url":"https://api.github.com/repos/rust-lang/rust/issues/comments/{number}","contents_url":"https://api.github.com/repos/rust-lang/rust/contents/{+path}","compare_url":"https://api.github.com/repos/rust-lang/rust/compare/{base}...{head}","merges_url":"https://api.github.com/repos/rust-lang/rust/merges","archive_url":"https://api.github.com/repos/rust-lang/rust/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/rust-lang/rust/downloads","issues_url":"https://api.github.com/repos/rust-lang/rust/issues{/number}","pulls_url":"https://api.github.com/repos/rust-lang/rust/pulls{/number}","milestones_url":"https://api.github.com/repos/rust-lang/rust/milestones{/number}","notifications_url":"https://api.github.com/repos/rust-lang/rust/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/rust-lang/rust/labels{/name}","releases_url":"https://api.github.com/repos/rust-lang/rust/releases{/id}","created_at":"2010-06-16T20:39:03Z","updated_at":"2015-02-04T21:03:49Z","pushed_at":"2015-02-04T20:03:55Z","git_url":"git://github.com/rust-lang/rust.git","ssh_url":"git@github.com:rust-lang/rust.git","clone_url":"https://github.com/rust-lang/rust.git","svn_url":"https://github.com/rust-lang/rust","homepage":"http://www.rust-lang.org","size":463600,"stargazers_count":9210,"watchers_count":9210,"language":"Rust","has_issues":true,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":1768,"mirror_url":null,"open_issues_count":1986,"forks":1768,"open_issues":1986,"watchers":9210,"default_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/rust-lang/rust/pulls/21936"},"html":{"href":"https://github.com/rust-lang/rust/pull/21936"},"issue":{"href":"https://api.github.com/repos/rust-lang/rust/issues/21936"},"comments":{"href":"https://api.github.com/repos/rust-lang/rust/issues/21936/comments"},"review_comments":{"href":"https://api.github.com/repos/rust-lang/rust/pulls/21936/comments"},"review_comment":{"href":"https://api.github.com/repos/rust-lang/rust/pulls/comments/{number}"},"commits":{"href":"https://api.github.com/repos/rust-lang/rust/pulls/21936/commits"},"statuses":{"href":"https://api.github.com/repos/rust-lang/rust/statuses/e5a8d4aed0f701bc540d591be064ca2c7334dae8"}}}}