/*!

The Rust standard library.

The Rust standand library provides a number of useful features that are
not required in or otherwise suitable for the core library.

*/

#[link(name = "std",
       vers = "0.4",
       uuid = "122bed0b-c19b-4b82-b0b7-7ae8aead7297",
       url = "https://github.com/mozilla/rust/tree/master/src/libstd")];

#[comment = "The Rust standard library"];
#[license = "MIT"];
#[crate_type = "lib"];

#[no_core];

#[allow(vecs_implicitly_copyable)];
#[deny(non_camel_case_types)];
// XXX this is set to allow because there are two methods in serialization
// that can't be silenced otherwise. Most every module is set to forbid
#[allow(deprecated_mode)];
#[forbid(deprecated_pattern)];

extern mod core(vers = "0.4");
use core::*;

// General io and system-services modules

pub mod net;
pub mod net_ip;
pub mod net_tcp;
pub mod net_url;

// libuv modules
pub mod uv;
pub mod uv_ll;
pub mod uv_iotask;
pub mod uv_global_loop;


// Utility modules

pub mod c_vec;
pub mod timer;
pub mod cell;

// Concurrency

pub mod sync;
pub mod arc;
pub mod comm;

// Collections

pub mod bitv;
pub mod deque;
pub mod fun_treemap;
pub mod list;
pub mod map;
pub mod rope;
pub mod smallintmap;
pub mod sort;
pub mod treemap;

// And ... other stuff

pub mod ebml;
pub mod dbg;
pub mod getopts;
pub mod json;
pub mod sha1;
pub mod md4;
pub mod tempfile;
pub mod term;
pub mod time;
pub mod prettyprint;
pub mod arena;
pub mod par;
pub mod cmp;
pub mod base64;

#[cfg(unicode)]
mod unicode;


// Compiler support modules

pub mod test;
pub mod serialization;

// Local Variables:
// mode: rust;
// fill-column: 78;
// indent-tabs-mode: nil
// c-basic-offset: 4
// buffer-file-coding-system: utf-8-unix
// End:
