{"action":"created","comment":{"url":"https://api.github.com/repos/rust-lang/time/pulls/comments/33498095","id":33498095,"diff_hunk":"@@ -0,0 +1,349 @@\n+\n+pub use self::inner::*;\n+\n+#[cfg(unix)]\n+mod inner {\n+    use libc::{c_int, c_long, c_char, time_t};\n+    use std::mem;\n+    use ::Tm;\n+\n+    #[cfg(any(target_os = \"macos\", target_os = \"ios\"))]\n+    pub use self::mac::*;\n+    #[cfg(all(not(target_os = \"macos\"), not(target_os = \"ios\")))]\n+    pub use self::unix::*;\n+\n+    /// ctime's `tm`\n+    #[repr(C)]\n+    struct tm {\n+        tm_sec: c_int,\n+        tm_min: c_int,\n+        tm_hour: c_int,\n+        tm_mday: c_int,\n+        tm_mon: c_int,\n+        tm_year: c_int,\n+        tm_wday: c_int,\n+        tm_yday: c_int,\n+        tm_isdst: c_int,\n+        tm_gmtoff: c_long,\n+        tm_zone: *const c_char,\n+    }\n+\n+    fn rust_tm_to_tm(rust_tm: &Tm, tm: &mut tm) {\n+        tm.tm_sec = rust_tm.tm_sec;\n+        tm.tm_min = rust_tm.tm_min;\n+        tm.tm_hour = rust_tm.tm_hour;\n+        tm.tm_mday = rust_tm.tm_mday;\n+        tm.tm_mon = rust_tm.tm_mon;\n+        tm.tm_year = rust_tm.tm_year;\n+        tm.tm_wday = rust_tm.tm_wday;\n+        tm.tm_yday = rust_tm.tm_yday;\n+        tm.tm_isdst = rust_tm.tm_isdst;\n+    }\n+\n+    fn tm_to_rust_tm(tm: &tm, utcoff: i32, rust_tm: &mut Tm) {\n+        rust_tm.tm_sec = tm.tm_sec;\n+        rust_tm.tm_min = tm.tm_min;\n+        rust_tm.tm_hour = tm.tm_hour;\n+        rust_tm.tm_mday = tm.tm_mday;\n+        rust_tm.tm_mon = tm.tm_mon;\n+        rust_tm.tm_year = tm.tm_year;\n+        rust_tm.tm_wday = tm.tm_wday;\n+        rust_tm.tm_yday = tm.tm_yday;\n+        rust_tm.tm_isdst = tm.tm_isdst;\n+        rust_tm.tm_utcoff = utcoff;\n+    }\n+\n+    extern {\n+        fn gmtime_r(time_p: *const time_t, result: *mut tm) -> *mut tm;\n+        fn localtime_r(time_p: *const time_t, result: *mut tm) -> *mut tm;\n+        fn timegm(tm: *const tm) -> time_t;\n+        fn mktime(tm: *const tm) -> time_t;\n+    }\n+\n+    pub fn time_to_utc_tm(sec: i64, tm: &mut Tm) {\n+        unsafe {\n+            let mut out = mem::zeroed();\n+            gmtime_r(&sec, &mut out);\n+            tm_to_rust_tm(&out, 0, tm);\n+        }\n+    }\n+\n+    pub fn time_to_local_tm(sec: i64, tm: &mut Tm) {\n+        unsafe {\n+            let mut out = mem::zeroed();\n+            localtime_r(&sec, &mut out);\n+            tm_to_rust_tm(&out, out.tm_gmtoff as i32, tm);\n+        }\n+    }\n+\n+    pub fn utc_tm_to_time(rust_tm: &Tm) -> i64 {\n+        let mut tm = unsafe { mem::zeroed() };\n+        rust_tm_to_tm(rust_tm, &mut tm);\n+        unsafe { timegm(&tm) }\n+    }\n+\n+    pub fn local_tm_to_time(rust_tm: &Tm) -> i64 {\n+        let mut tm = unsafe { mem::zeroed() };\n+        rust_tm_to_tm(rust_tm, &mut tm);\n+        unsafe { mktime(&tm) }\n+    }\n+\n+    #[cfg(any(target_os = \"macos\", target_os = \"ios\"))]\n+    mod mac {\n+        use libc::{timeval, timezone, c_int, mach_timebase_info};\n+        use std::sync::{Once, ONCE_INIT};\n+\n+        extern {\n+            fn gettimeofday(tp: *mut timeval, tzp: *mut timezone) -> c_int;\n+            fn mach_absolute_time() -> u64;\n+            fn mach_timebase_info(info: *mut mach_timebase_info) -> c_int;\n+        }\n+\n+        fn info() -> &'static mach_timebase_info {\n+            static mut INFO: mach_timebase_info = mach_timebase_info {\n+                numer: 0,\n+                denom: 0,\n+            };\n+            static ONCE: Once = ONCE_INIT;\n+\n+            unsafe {\n+                ONCE.call_once(|| {\n+                    mach_timebase_info(&mut INFO);\n+                });\n+                &INFO\n+            }\n+        }\n+\n+        pub fn get_time() -> (i64, i32) {\n+            use std::ptr;\n+            let mut tv = libc::timeval { tv_sec: 0, tv_usec: 0 };\n+            unsafe { gettimeofday(&mut tv, ptr::null_mut()); }\n+            (tv.tv_sec as i64, tv.tv_usec * 1000)\n+        }\n+\n+        pub fn get_precise_ns() -> u64 {\n+            unsafe {\n+                let time = mach_absolute_time();\n+                let info = info();\n+                time * info.numer as u64 / info.denom as u64\n+            }\n+        }\n+    }\n+\n+    #[cfg(all(not(target_os = \"macos\"), not(target_os = \"ios\")))]\n+    mod unix {\n+        use libc::{self, c_int, timespec};\n+\n+        #[cfg(all(not(target_os = \"android\"),\n+                  not(target_os = \"bitrig\"),\n+                  not(target_os = \"nacl\"),\n+                  not(target_os = \"openbsd\")))]\n+        #[link(name = \"rt\")]\n+        extern {}\n+\n+        extern {\n+            fn clock_gettime(clk_id: c_int, tp: *mut timespec) -> c_int;\n+        }\n+\n+        pub fn get_time() -> (i64, i32) {\n+            let mut tv = libc::timespec { tv_sec: 0, tv_nsec: 0 };\n+            unsafe { clock_gettime(libc::CLOCK_REALTIME, &mut tv); }\n+            (tv.tv_sec as i64, tv.tv_nsec as i32)\n+        }\n+\n+        pub fn get_precise_ns() -> u64 {\n+            let mut ts = libc::timespec { tv_sec: 0, tv_nsec: 0 };\n+            unsafe {\n+                clock_gettime(libc::CLOCK_MONOTONIC, &mut ts);\n+            }\n+            (ts.tv_sec as u64) * 1000000000 + (ts.tv_nsec as u64)\n+        }\n+    }\n+}\n+\n+#[cfg(windows)]\n+#[allow(non_snake_case)]\n+mod inner {\n+    use ::Tm;\n+    use std::mem;\n+    use std::sync::{Once, ONCE_INIT};\n+\n+    use winapi::*;\n+    use kernel32::*;\n+\n+    fn frequency() -> LARGE_INTEGER {\n+        static mut FREQUENCY: LARGE_INTEGER = 0;\n+        static ONCE: Once = ONCE_INIT;\n+\n+        unsafe {\n+            ONCE.call_once(|| {\n+                QueryPerformanceFrequency(&mut FREQUENCY);\n+            });\n+            FREQUENCY\n+        }\n+    }\n+\n+    const HECTONANOSECS_IN_SEC: u64 = 10_000_000;\n+    const HECTONANOSEC_TO_UNIX_EPOCH: u64 = 11_644_473_600 * HECTONANOSECS_IN_SEC;\n+\n+    fn time_to_file_time(sec: i64) -> FILETIME {\n+        let t = (sec as u64 * HECTONANOSECS_IN_SEC) + HECTONANOSEC_TO_UNIX_EPOCH;\n+        FILETIME {\n+            dwLowDateTime: t as DWORD,\n+            dwHighDateTime: (t >> 32) as DWORD\n+        }\n+    }\n+\n+    fn file_time_to_nsec(ft: &FILETIME) -> i32 {\n+        let t = ((ft.dwHighDateTime as u64) << 32) | (ft.dwLowDateTime as u64);\n+        (((t - HECTONANOSEC_TO_UNIX_EPOCH) % HECTONANOSECS_IN_SEC) * 100) as i32\n+    }\n+\n+    fn file_time_to_time(ft: &FILETIME) -> i64 {\n+        let t = ((ft.dwHighDateTime as u64) << 32) | (ft.dwLowDateTime as u64);\n+        ((t - HECTONANOSEC_TO_UNIX_EPOCH) / HECTONANOSECS_IN_SEC) as i64\n+    }\n+\n+    fn tm_to_system_time(tm: &Tm) -> SYSTEMTIME {\n+        let mut sys: SYSTEMTIME = unsafe { mem::zeroed() };\n+        sys.wSecond = tm.tm_sec as WORD;\n+        sys.wMinute = tm.tm_min as WORD;\n+        sys.wHour = tm.tm_hour as WORD;\n+        sys.wDay = tm.tm_mday as WORD;\n+        sys.wDayOfWeek = tm.tm_wday as WORD;\n+        sys.wMonth = (tm.tm_mon + 1) as WORD;\n+        sys.wYear = (tm.tm_year + 1900) as WORD;\n+        sys\n+    }\n+\n+    fn system_time_to_tm(sys: &SYSTEMTIME, tm: &mut Tm) {\n+        tm.tm_sec = sys.wSecond as i32;\n+        tm.tm_min = sys.wMinute as i32;\n+        tm.tm_hour = sys.wHour as i32;\n+        tm.tm_mday = sys.wDay as i32;\n+        tm.tm_wday = sys.wDayOfWeek as i32;\n+        tm.tm_mon = (sys.wMonth - 1) as i32;\n+        tm.tm_year = (sys.wYear - 1900) as i32;\n+        tm.tm_yday = yday(tm.tm_year, tm.tm_mon + 1, tm.tm_mday);\n+\n+        fn yday(year: i32, month: i32, day: i32) -> i32 {\n+            let leap = if month > 2 {\n+                if year % 4 == 0 { 1 } else { 2 }\n+            } else {\n+                0\n+            };\n+            let july = if month > 7 { 1 } else { 0 };\n+\n+            (month - 1) * 30 + month / 2 + (day - 1) - leap + july\n+        }\n+    }\n+\n+\n+ \n+    pub fn time_to_utc_tm(sec: i64, tm: &mut Tm) {\n+        let mut out = unsafe { mem::zeroed() };\n+        let ft = time_to_file_time(sec);\n+        unsafe {\n+            FileTimeToSystemTime(&ft, &mut out);\n+        }\n+        system_time_to_tm(&out, tm);\n+        tm.tm_utcoff = 0;\n+    }\n+\n+    pub fn time_to_local_tm(sec: i64, tm: &mut Tm) {\n+        let mut out = unsafe { mem::zeroed() };\n+        let tz = time_zone(None);\n+        let ft = time_to_file_time(sec);\n+        unsafe {\n+            let mut utc = mem::zeroed();\n+            FileTimeToSystemTime(&ft, &mut utc);\n+            SystemTimeToTzSpecificLocalTime(tz, &mut utc, &mut out);\n+            system_time_to_tm(&out, tm);\n+            tm.tm_utcoff = -(*tz).Bias * 60;\n+        }\n+    }\n+\n+    pub fn utc_tm_to_time(tm: &Tm) -> i64 {\n+        unsafe {\n+            let mut ft = mem::zeroed();\n+            let sys_time = tm_to_system_time(tm);\n+            SystemTimeToFileTime(&sys_time, &mut ft);\n+            file_time_to_time(&ft)\n+        }\n+    }\n+\n+    pub fn local_tm_to_time(tm: &Tm) -> i64 {\n+        unsafe {\n+            let mut ft = mem::zeroed();\n+            let mut utc = mem::zeroed();\n+            let mut sys_time = tm_to_system_time(tm);\n+            TzSpecificLocalTimeToSystemTime(time_zone(None), &mut sys_time, &mut utc);\n+            SystemTimeToFileTime(&utc, &mut ft);\n+            file_time_to_time(&ft)\n+        }\n+    }\n+\n+    pub fn get_time() -> (i64, i32) {\n+        unsafe {\n+            let mut ft = mem::zeroed();\n+            GetSystemTimeAsFileTime(&mut ft);\n+            (file_time_to_time(&ft), file_time_to_nsec(&ft))\n+        }\n+    }\n+\n+    pub fn get_precise_ns() -> u64 {\n+        let mut ticks = 0;\n+        unsafe {\n+            assert!(QueryPerformanceCounter(&mut ticks) == 1);\n+        }\n+        mul_div_i64(ticks as i64, 1000000000, frequency() as i64) as u64\n+\n+    }\n+\n+    pub fn time_zone(bias: Option<i32>) -> *const TIME_ZONE_INFORMATION {","path":"src/sys.rs","position":303,"original_position":303,"commit_id":"e302e640a99cc90bc725be9a6293ff24ad68f4b9","original_commit_id":"e302e640a99cc90bc725be9a6293ff24ad68f4b9","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":"I'm not sure I quite understand what's going on in this function, is it trying to emulate some unix primitive? There are a number of calls in this file to `time_zone`, in addition to some calls in some tests, but this is guarded with a `Once` so I'm not sure what effect they all have.","created_at":"2015-06-29T18:49:54Z","updated_at":"2015-06-29T18:49:54Z","html_url":"https://github.com/rust-lang/time/pull/103#discussion_r33498095","pull_request_url":"https://api.github.com/repos/rust-lang/time/pulls/103","_links":{"self":{"href":"https://api.github.com/repos/rust-lang/time/pulls/comments/33498095"},"html":{"href":"https://github.com/rust-lang/time/pull/103#discussion_r33498095"},"pull_request":{"href":"https://api.github.com/repos/rust-lang/time/pulls/103"}}},"pull_request":{"url":"https://api.github.com/repos/rust-lang/time/pulls/103","id":38380560,"html_url":"https://github.com/rust-lang/time/pull/103","diff_url":"https://github.com/rust-lang/time/pull/103.diff","patch_url":"https://github.com/rust-lang/time/pull/103.patch","issue_url":"https://api.github.com/repos/rust-lang/time/issues/103","number":103,"state":"open","locked":false,"title":"remove reliance on C code, move most into sys.rs","user":{"login":"seanmonstar","id":51479,"avatar_url":"https://avatars.githubusercontent.com/u/51479?v=3","gravatar_id":"","url":"https://api.github.com/users/seanmonstar","html_url":"https://github.com/seanmonstar","followers_url":"https://api.github.com/users/seanmonstar/followers","following_url":"https://api.github.com/users/seanmonstar/following{/other_user}","gists_url":"https://api.github.com/users/seanmonstar/gists{/gist_id}","starred_url":"https://api.github.com/users/seanmonstar/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/seanmonstar/subscriptions","organizations_url":"https://api.github.com/users/seanmonstar/orgs","repos_url":"https://api.github.com/users/seanmonstar/repos","events_url":"https://api.github.com/users/seanmonstar/events{/privacy}","received_events_url":"https://api.github.com/users/seanmonstar/received_events","type":"User","site_admin":false},"body":"This builds on the 2 machines I have access to:\r\n\r\n- Windows 7 x86_64\r\n- `Linux grunt 4.0.4-x86_64-linode57 #1 SMP Thu May 21 11:01:47 EDT 2015 x86_64 x86_64 x86_64 GNU/Linux`\r\n\r\nI know there were some tiny differences in time_helpers.c, such as for native client, that I can't test, nor do I specifically know how to port it into Rust.\r\n\r\nFixes #78 ","created_at":"2015-06-23T20:42:35Z","updated_at":"2015-06-29T18:49:54Z","closed_at":null,"merged_at":null,"merge_commit_sha":"e686417fc5d08e6ca61cbe0982ff84d4f95a3452","assignee":{"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},"milestone":null,"commits_url":"https://api.github.com/repos/rust-lang/time/pulls/103/commits","review_comments_url":"https://api.github.com/repos/rust-lang/time/pulls/103/comments","review_comment_url":"https://api.github.com/repos/rust-lang/time/pulls/comments{/number}","comments_url":"https://api.github.com/repos/rust-lang/time/issues/103/comments","statuses_url":"https://api.github.com/repos/rust-lang/time/statuses/e302e640a99cc90bc725be9a6293ff24ad68f4b9","head":{"label":"seanmonstar:sys","ref":"sys","sha":"e302e640a99cc90bc725be9a6293ff24ad68f4b9","user":{"login":"seanmonstar","id":51479,"avatar_url":"https://avatars.githubusercontent.com/u/51479?v=3","gravatar_id":"","url":"https://api.github.com/users/seanmonstar","html_url":"https://github.com/seanmonstar","followers_url":"https://api.github.com/users/seanmonstar/followers","following_url":"https://api.github.com/users/seanmonstar/following{/other_user}","gists_url":"https://api.github.com/users/seanmonstar/gists{/gist_id}","starred_url":"https://api.github.com/users/seanmonstar/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/seanmonstar/subscriptions","organizations_url":"https://api.github.com/users/seanmonstar/orgs","repos_url":"https://api.github.com/users/seanmonstar/repos","events_url":"https://api.github.com/users/seanmonstar/events{/privacy}","received_events_url":"https://api.github.com/users/seanmonstar/received_events","type":"User","site_admin":false},"repo":{"id":32654959,"name":"time","full_name":"seanmonstar/time","owner":{"login":"seanmonstar","id":51479,"avatar_url":"https://avatars.githubusercontent.com/u/51479?v=3","gravatar_id":"","url":"https://api.github.com/users/seanmonstar","html_url":"https://github.com/seanmonstar","followers_url":"https://api.github.com/users/seanmonstar/followers","following_url":"https://api.github.com/users/seanmonstar/following{/other_user}","gists_url":"https://api.github.com/users/seanmonstar/gists{/gist_id}","starred_url":"https://api.github.com/users/seanmonstar/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/seanmonstar/subscriptions","organizations_url":"https://api.github.com/users/seanmonstar/orgs","repos_url":"https://api.github.com/users/seanmonstar/repos","events_url":"https://api.github.com/users/seanmonstar/events{/privacy}","received_events_url":"https://api.github.com/users/seanmonstar/received_events","type":"User","site_admin":false},"private":false,"html_url":"https://github.com/seanmonstar/time","description":"Simple time handling in Rust","fork":true,"url":"https://api.github.com/repos/seanmonstar/time","forks_url":"https://api.github.com/repos/seanmonstar/time/forks","keys_url":"https://api.github.com/repos/seanmonstar/time/keys{/key_id}","collaborators_url":"https://api.github.com/repos/seanmonstar/time/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/seanmonstar/time/teams","hooks_url":"https://api.github.com/repos/seanmonstar/time/hooks","issue_events_url":"https://api.github.com/repos/seanmonstar/time/issues/events{/number}","events_url":"https://api.github.com/repos/seanmonstar/time/events","assignees_url":"https://api.github.com/repos/seanmonstar/time/assignees{/user}","branches_url":"https://api.github.com/repos/seanmonstar/time/branches{/branch}","tags_url":"https://api.github.com/repos/seanmonstar/time/tags","blobs_url":"https://api.github.com/repos/seanmonstar/time/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/seanmonstar/time/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/seanmonstar/time/git/refs{/sha}","trees_url":"https://api.github.com/repos/seanmonstar/time/git/trees{/sha}","statuses_url":"https://api.github.com/repos/seanmonstar/time/statuses/{sha}","languages_url":"https://api.github.com/repos/seanmonstar/time/languages","stargazers_url":"https://api.github.com/repos/seanmonstar/time/stargazers","contributors_url":"https://api.github.com/repos/seanmonstar/time/contributors","subscribers_url":"https://api.github.com/repos/seanmonstar/time/subscribers","subscription_url":"https://api.github.com/repos/seanmonstar/time/subscription","commits_url":"https://api.github.com/repos/seanmonstar/time/commits{/sha}","git_commits_url":"https://api.github.com/repos/seanmonstar/time/git/commits{/sha}","comments_url":"https://api.github.com/repos/seanmonstar/time/comments{/number}","issue_comment_url":"https://api.github.com/repos/seanmonstar/time/issues/comments{/number}","contents_url":"https://api.github.com/repos/seanmonstar/time/contents/{+path}","compare_url":"https://api.github.com/repos/seanmonstar/time/compare/{base}...{head}","merges_url":"https://api.github.com/repos/seanmonstar/time/merges","archive_url":"https://api.github.com/repos/seanmonstar/time/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/seanmonstar/time/downloads","issues_url":"https://api.github.com/repos/seanmonstar/time/issues{/number}","pulls_url":"https://api.github.com/repos/seanmonstar/time/pulls{/number}","milestones_url":"https://api.github.com/repos/seanmonstar/time/milestones{/number}","notifications_url":"https://api.github.com/repos/seanmonstar/time/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/seanmonstar/time/labels{/name}","releases_url":"https://api.github.com/repos/seanmonstar/time/releases{/id}","created_at":"2015-03-21T23:55:36Z","updated_at":"2015-03-21T23:55:36Z","pushed_at":"2015-06-25T00:00:16Z","git_url":"git://github.com/seanmonstar/time.git","ssh_url":"git@github.com:seanmonstar/time.git","clone_url":"https://github.com/seanmonstar/time.git","svn_url":"https://github.com/seanmonstar/time","homepage":null,"size":1122,"stargazers_count":0,"watchers_count":0,"language":"Rust","has_issues":false,"has_downloads":true,"has_wiki":true,"has_pages":true,"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":"32b212b877b836dbfdc97af5674d91672e70ecbd","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":26459635,"name":"time","full_name":"rust-lang/time","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/time","description":"Simple time handling in Rust","fork":false,"url":"https://api.github.com/repos/rust-lang/time","forks_url":"https://api.github.com/repos/rust-lang/time/forks","keys_url":"https://api.github.com/repos/rust-lang/time/keys{/key_id}","collaborators_url":"https://api.github.com/repos/rust-lang/time/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/rust-lang/time/teams","hooks_url":"https://api.github.com/repos/rust-lang/time/hooks","issue_events_url":"https://api.github.com/repos/rust-lang/time/issues/events{/number}","events_url":"https://api.github.com/repos/rust-lang/time/events","assignees_url":"https://api.github.com/repos/rust-lang/time/assignees{/user}","branches_url":"https://api.github.com/repos/rust-lang/time/branches{/branch}","tags_url":"https://api.github.com/repos/rust-lang/time/tags","blobs_url":"https://api.github.com/repos/rust-lang/time/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/rust-lang/time/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/rust-lang/time/git/refs{/sha}","trees_url":"https://api.github.com/repos/rust-lang/time/git/trees{/sha}","statuses_url":"https://api.github.com/repos/rust-lang/time/statuses/{sha}","languages_url":"https://api.github.com/repos/rust-lang/time/languages","stargazers_url":"https://api.github.com/repos/rust-lang/time/stargazers","contributors_url":"https://api.github.com/repos/rust-lang/time/contributors","subscribers_url":"https://api.github.com/repos/rust-lang/time/subscribers","subscription_url":"https://api.github.com/repos/rust-lang/time/subscription","commits_url":"https://api.github.com/repos/rust-lang/time/commits{/sha}","git_commits_url":"https://api.github.com/repos/rust-lang/time/git/commits{/sha}","comments_url":"https://api.github.com/repos/rust-lang/time/comments{/number}","issue_comment_url":"https://api.github.com/repos/rust-lang/time/issues/comments{/number}","contents_url":"https://api.github.com/repos/rust-lang/time/contents/{+path}","compare_url":"https://api.github.com/repos/rust-lang/time/compare/{base}...{head}","merges_url":"https://api.github.com/repos/rust-lang/time/merges","archive_url":"https://api.github.com/repos/rust-lang/time/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/rust-lang/time/downloads","issues_url":"https://api.github.com/repos/rust-lang/time/issues{/number}","pulls_url":"https://api.github.com/repos/rust-lang/time/pulls{/number}","milestones_url":"https://api.github.com/repos/rust-lang/time/milestones{/number}","notifications_url":"https://api.github.com/repos/rust-lang/time/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/rust-lang/time/labels{/name}","releases_url":"https://api.github.com/repos/rust-lang/time/releases{/id}","created_at":"2014-11-10T22:52:18Z","updated_at":"2015-06-27T14:25:22Z","pushed_at":"2015-06-29T18:47:49Z","git_url":"git://github.com/rust-lang/time.git","ssh_url":"git@github.com:rust-lang/time.git","clone_url":"https://github.com/rust-lang/time.git","svn_url":"https://github.com/rust-lang/time","homepage":null,"size":2090,"stargazers_count":49,"watchers_count":49,"language":"Rust","has_issues":true,"has_downloads":true,"has_wiki":true,"has_pages":true,"forks_count":44,"mirror_url":null,"open_issues_count":8,"forks":44,"open_issues":8,"watchers":49,"default_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/rust-lang/time/pulls/103"},"html":{"href":"https://github.com/rust-lang/time/pull/103"},"issue":{"href":"https://api.github.com/repos/rust-lang/time/issues/103"},"comments":{"href":"https://api.github.com/repos/rust-lang/time/issues/103/comments"},"review_comments":{"href":"https://api.github.com/repos/rust-lang/time/pulls/103/comments"},"review_comment":{"href":"https://api.github.com/repos/rust-lang/time/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/rust-lang/time/pulls/103/commits"},"statuses":{"href":"https://api.github.com/repos/rust-lang/time/statuses/e302e640a99cc90bc725be9a6293ff24ad68f4b9"}}}}