      1
      2
      3
      4
      5
      6
      7
      8
      9
     10
     11
     12
     13
     14
     15
     16
     17
     18
     19
     20
     21
     22
     23
     24
     25
     26
     27
     28
     29
     30
     31
     32
     33
     34
     35
     36
     37
     38
     39
     40
     41
     42
     43
     44
     45
     46
     47
     48
     49
     50
     51
     52
     53
     54
     55
     56
     57
     58
     59
     60
     61
     62
     63
     64
     65
     66
     67
     68
     69
     70
     71
     72
     73
     74
     75
     76
     77
     78
     79
     80
     81
     82
     83
     84
     85
     86
     87
     88
     89
     90
     91
     92
     93
     94
     95
     96
     97
     98
     99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128

    // Copyright 2016 The Rust Project Developers. See the COPYRIGHT
    // file at the top-level directory of this distribution and at
    // http://rust-lang.org/COPYRIGHT.
    //
    // Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or
    // http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
    // <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your
    // option. This file may not be copied, modified, or distributed
    // except according to those terms.

    #![stable(feature = "metadata_ext", since = "1.1.0")]

    use libc;

    use fs::Metadata;
    use sys_common::AsInner;

    #[allow(deprecated)]
    use os::linux::raw;

    /// OS-specific extension methods for `fs::Metadata`
    #[stable(feature = "metadata_ext", since = "1.1.0")]
    pub trait MetadataExt {
        /// Gain a reference to the underlying `stat` structure which contains
        /// the raw information returned by the OS.
        ///
        /// The contents of the returned `stat` are **not** consistent across
        /// Unix platforms. The `os::unix::fs::MetadataExt` trait contains the
        /// cross-Unix abstractions contained within the raw stat.
        #[stable(feature = "metadata_ext", since = "1.1.0")]
        #[rustc_deprecated(since = "1.8.0",
                           reason = "deprecated in favor of the accessor \
                                     methods of this trait")]
        #[allow(deprecated)]
        fn as_raw_stat(&self) -> &raw::stat;

        #[stable(feature = "metadata_ext2", since = "1.8.0")]
        fn st_dev(&self) -> u64;
        #[stable(feature = "metadata_ext2", since = "1.8.0")]
        fn st_ino(&self) -> u64;
        #[stable(feature = "metadata_ext2", since = "1.8.0")]
        fn st_mode(&self) -> u32;
        #[stable(feature = "metadata_ext2", since = "1.8.0")]
        fn st_nlink(&self) -> u64;
        #[stable(feature = "metadata_ext2", since = "1.8.0")]
        fn st_uid(&self) -> u32;
        #[stable(feature = "metadata_ext2", since = "1.8.0")]
        fn st_gid(&self) -> u32;
        #[stable(feature = "metadata_ext2", since = "1.8.0")]
        fn st_rdev(&self) -> u64;
        #[stable(feature = "metadata_ext2", since = "1.8.0")]
        fn st_size(&self) -> u64;
        #[stable(feature = "metadata_ext2", since = "1.8.0")]
        fn st_atime(&self) -> i64;
        #[stable(feature = "metadata_ext2", since = "1.8.0")]
        fn st_atime_nsec(&self) -> i64;
        #[stable(feature = "metadata_ext2", since = "1.8.0")]
        fn st_mtime(&self) -> i64;
        #[stable(feature = "metadata_ext2", since = "1.8.0")]
        fn st_mtime_nsec(&self) -> i64;
        #[stable(feature = "metadata_ext2", since = "1.8.0")]
        fn st_ctime(&self) -> i64;
        #[stable(feature = "metadata_ext2", since = "1.8.0")]
        fn st_ctime_nsec(&self) -> i64;
        #[stable(feature = "metadata_ext2", since = "1.8.0")]
        fn st_blksize(&self) -> u64;
        #[stable(feature = "metadata_ext2", since = "1.8.0")]
        fn st_blocks(&self) -> u64;
    }

    #[stable(feature = "metadata_ext", since = "1.1.0")]
    impl MetadataExt for Metadata {
        #[allow(deprecated)]
        fn as_raw_stat(&self) -> &raw::stat {
            unsafe {
                &*(self.as_inner().as_inner() as *const libc::stat64
                                              as *const raw::stat)
            }
        }
        fn st_dev(&self) -> u64 {
            self.as_inner().as_inner().st_dev as u64
        }
        fn st_ino(&self) -> u64 {
            self.as_inner().as_inner().st_ino as u64
        }
        fn st_mode(&self) -> u32 {
            self.as_inner().as_inner().st_mode as u32
        }
        fn st_nlink(&self) -> u64 {
            self.as_inner().as_inner().st_nlink as u64
        }
        fn st_uid(&self) -> u32 {
            self.as_inner().as_inner().st_uid as u32
        }
        fn st_gid(&self) -> u32 {
            self.as_inner().as_inner().st_gid as u32
        }
        fn st_rdev(&self) -> u64 {
            self.as_inner().as_inner().st_rdev as u64
        }
        fn st_size(&self) -> u64 {
            self.as_inner().as_inner().st_size as u64
        }
        fn st_atime(&self) -> i64 {
            self.as_inner().as_inner().st_atime as i64
        }
        fn st_atime_nsec(&self) -> i64 {
            self.as_inner().as_inner().st_atime_nsec as i64
        }
        fn st_mtime(&self) -> i64 {
            self.as_inner().as_inner().st_mtime as i64
        }
        fn st_mtime_nsec(&self) -> i64 {
            self.as_inner().as_inner().st_mtime_nsec as i64
        }
        fn st_ctime(&self) -> i64 {
            self.as_inner().as_inner().st_ctime as i64
        }
        fn st_ctime_nsec(&self) -> i64 {
            self.as_inner().as_inner().st_ctime_nsec as i64
        }
        fn st_blksize(&self) -> u64 {
            self.as_inner().as_inner().st_blksize as u64
        }
        fn st_blocks(&self) -> u64 {
            self.as_inner().as_inner().st_blocks as u64
        }
    }

# Help

## Keyboard Shortcuts

?
  Show this help dialog
S
  Focus the search field
⇤
  Move up in search results
⇥
  Move down in search results
⏎
  Go to active search result
+
  Collapse/expand all sections

## Search Tricks

Prefix searches with a type followed by a colon (e.g. `fn:`) to restrict the search to a given type.

Accepted types are: `fn`, `mod`, `struct`, `enum`, `trait`, `type`, `macro`, and `const`.

Search functions by type signature (e.g. `vec -> usize` or `* -> vec`)