The system Rust uses is closer to imake than autoconf: the compiler knows what system its building for and sets attributes to let the code know what it should use. (The imake style is a little less flexible than autoconf, but no less insane. Six of one, half a dozen of the other.)<p>For example:<p><pre><code>    cfg_if! {
      if #[cfg(windows)] {
        mod windows;
        pub use windows::*;
      } else {
        mod unix;
        pub use unix::*;
      }
    }
</code></pre>
The 13 struct stat&#x27;s in libc: <a href="https:&#x2F;&#x2F;github.com&#x2F;rust-lang-nursery&#x2F;libc&#x2F;search?utf8=%E2%9C%93&amp;q=struct+stat" rel="nofollow">https:&#x2F;&#x2F;github.com&#x2F;rust-lang-nursery&#x2F;libc&#x2F;search?utf8=%E2%9C...</a><p>Cargo supports versioning libraries (and seemingly does so sanely!). Obscure platform support is obscure.