about summary refs log tree commit diff
path: root/src/libstd
diff options
context:
space:
mode:
Diffstat (limited to 'src/libstd')
-rw-r--r--src/libstd/io/timer.rs1
-rw-r--r--src/libstd/lib.rs5
-rw-r--r--src/libstd/option.rs170
-rw-r--r--src/libstd/os.rs4
-rw-r--r--src/libstd/prelude.rs1
-rw-r--r--src/libstd/rt/env.rs2
-rw-r--r--src/libstd/slice.rs1
-rw-r--r--src/libstd/vec.rs2
8 files changed, 4 insertions, 182 deletions
diff --git a/src/libstd/io/timer.rs b/src/libstd/io/timer.rs
index 2df6062b7ac..d7476dd2de8 100644
--- a/src/libstd/io/timer.rs
+++ b/src/libstd/io/timer.rs
@@ -21,7 +21,6 @@ use comm::Receiver;
 use io::IoResult;
 use kinds::Send;
 use owned::Box;
-use option::Expect;
 use rt::rtio::{IoFactory, LocalIo, RtioTimer};
 
 /// A synchronous timer object
diff --git a/src/libstd/lib.rs b/src/libstd/lib.rs
index cde1a7335a5..db84a724adb 100644
--- a/src/libstd/lib.rs
+++ b/src/libstd/lib.rs
@@ -155,6 +155,7 @@ pub use core::simd;
 pub use core::tuple;
 #[cfg(not(test))] pub use core::ty;
 pub use core::result;
+pub use core::option;
 
 pub use alloc::owned;
 pub use alloc::rc;
@@ -219,10 +220,6 @@ pub mod num;
 pub mod to_str;
 pub mod hash;
 
-/* Common data structures */
-
-pub mod option;
-
 /* Tasks and communication */
 
 pub mod task;
diff --git a/src/libstd/option.rs b/src/libstd/option.rs
deleted file mode 100644
index ad834f2b4d4..00000000000
--- a/src/libstd/option.rs
+++ /dev/null
@@ -1,170 +0,0 @@
-// Copyright 2014 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.
-
-//! Optional values
-//!
-//! Type `Option` represents an optional value: every `Option`
-//! is either `Some` and contains a value, or `None`, and
-//! does not. `Option` types are very common in Rust code, as
-//! they have a number of uses:
-//!
-//! * Initial values
-//! * Return values for functions that are not defined
-//!   over their entire input range (partial functions)
-//! * Return value for otherwise reporting simple errors, where `None` is
-//!   returned on error
-//! * Optional struct fields
-//! * Struct fields that can be loaned or "taken"
-//! * Optional function arguments
-//! * Nullable pointers
-//! * Swapping things out of difficult situations
-//!
-//! Options are commonly paired with pattern matching to query the presence
-//! of a value and take action, always accounting for the `None` case.
-//!
-//! ```
-//! fn divide(numerator: f64, denominator: f64) -> Option<f64> {
-//!     if denominator == 0.0 {
-//!         None
-//!     } else {
-//!         Some(numerator / denominator)
-//!     }
-//! }
-//!
-//! // The return value of the function is an option
-//! let result = divide(2.0, 3.0);
-//!
-//! // Pattern match to retrieve the value
-//! match result {
-//!     // The division was valid
-//!     Some(x) => println!("Result: {}", x),
-//!     // The division was invalid
-//!     None    => println!("Cannot divide by 0")
-//! }
-//! ```
-//!
-//
-// FIXME: Show how `Option` is used in practice, with lots of methods
-//
-//! # Options and pointers ("nullable" pointers)
-//!
-//! Rust's pointer types must always point to a valid location; there are
-//! no "null" pointers. Instead, Rust has *optional* pointers, like
-//! the optional owned box, `Option<Box<T>>`.
-//!
-//! The following example uses `Option` to create an optional box of
-//! `int`. Notice that in order to use the inner `int` value first the
-//! `check_optional` function needs to use pattern matching to
-//! determine whether the box has a value (i.e. it is `Some(...)`) or
-//! not (`None`).
-//!
-//! ```
-//! let optional: Option<Box<int>> = None;
-//! check_optional(&optional);
-//!
-//! let optional: Option<Box<int>> = Some(box 9000);
-//! check_optional(&optional);
-//!
-//! fn check_optional(optional: &Option<Box<int>>) {
-//!     match *optional {
-//!         Some(ref p) => println!("have value {}", p),
-//!         None => println!("have no value")
-//!     }
-//! }
-//! ```
-//!
-//! This usage of `Option` to create safe nullable pointers is so
-//! common that Rust does special optimizations to make the
-//! representation of `Option<Box<T>>` a single pointer. Optional pointers
-//! in Rust are stored as efficiently as any other pointer type.
-//!
-//! # Examples
-//!
-//! Basic pattern matching on `Option`:
-//!
-//! ```
-//! let msg = Some("howdy");
-//!
-//! // Take a reference to the contained string
-//! match msg {
-//!     Some(ref m) => println!("{}", *m),
-//!     None => ()
-//! }
-//!
-//! // Remove the contained string, destroying the Option
-//! let unwrapped_msg = match msg {
-//!     Some(m) => m,
-//!     None => "default message"
-//! };
-//! ```
-//!
-//! Initialize a result to `None` before a loop:
-//!
-//! ```
-//! enum Kingdom { Plant(uint, &'static str), Animal(uint, &'static str) }
-//!
-//! // A list of data to search through.
-//! let all_the_big_things = [
-//!     Plant(250, "redwood"),
-//!     Plant(230, "noble fir"),
-//!     Plant(229, "sugar pine"),
-//!     Animal(25, "blue whale"),
-//!     Animal(19, "fin whale"),
-//!     Animal(15, "north pacific right whale"),
-//! ];
-//!
-//! // We're going to search for the name of the biggest animal,
-//! // but to start with we've just got `None`.
-//! let mut name_of_biggest_animal = None;
-//! let mut size_of_biggest_animal = 0;
-//! for big_thing in all_the_big_things.iter() {
-//!     match *big_thing {
-//!         Animal(size, name) if size > size_of_biggest_animal => {
-//!             // Now we've found the name of some big animal
-//!             size_of_biggest_animal = size;
-//!             name_of_biggest_animal = Some(name);
-//!         }
-//!         Animal(..) | Plant(..) => ()
-//!     }
-//! }
-//!
-//! match name_of_biggest_animal {
-//!     Some(name) => println!("the biggest animal is {}", name),
-//!     None => println!("there are no animals :(")
-//! }
-//! ```
-
-use any::Any;
-use kinds::Send;
-
-pub use core::option::{Option, Some, None, Item, collect};
-
-/// Extension trait for the `Option` type to add an `expect` method
-
-// FIXME(#14008) should this trait even exist?
-pub trait Expect<T> {
-    /// Unwraps an option, yielding the content of a `Some`
-    ///
-    /// # Failure
-    ///
-    /// Fails if the value is a `None` with a custom failure message provided by
-    /// `msg`.
-    fn expect<M: Any + Send>(self, m: M) -> T;
-}
-
-impl<T> Expect<T> for Option<T> {
-    #[inline]
-    fn expect<M: Any + Send>(self, msg: M) -> T {
-        match self {
-            Some(val) => val,
-            None => fail!(msg),
-        }
-    }
-}
diff --git a/src/libstd/os.rs b/src/libstd/os.rs
index fa0116b2482..486d98a5487 100644
--- a/src/libstd/os.rs
+++ b/src/libstd/os.rs
@@ -85,7 +85,6 @@ pub fn getcwd() -> Path {
 pub fn getcwd() -> Path {
     use libc::DWORD;
     use libc::GetCurrentDirectoryW;
-    use option::Expect;
 
     let mut buf = [0 as u16, ..BUF_BYTES];
     unsafe {
@@ -101,7 +100,7 @@ pub fn getcwd() -> Path {
 pub mod win32 {
     use libc::types::os::arch::extra::DWORD;
     use libc;
-    use option::{None, Option, Expect};
+    use option::{None, Option};
     use option;
     use os::TMPBUF_SZ;
     use slice::{MutableVector, ImmutableVector};
@@ -924,7 +923,6 @@ fn real_args() -> Vec<String> {
 #[cfg(windows)]
 fn real_args() -> Vec<String> {
     use slice;
-    use option::Expect;
 
     let mut nArgs: c_int = 0;
     let lpArgCount: *mut c_int = &mut nArgs;
diff --git a/src/libstd/prelude.rs b/src/libstd/prelude.rs
index cce2cce0d6e..54dcbd1812f 100644
--- a/src/libstd/prelude.rs
+++ b/src/libstd/prelude.rs
@@ -69,7 +69,6 @@
 #[doc(no_inline)] pub use num::{Num, NumCast, CheckedAdd, CheckedSub, CheckedMul};
 #[doc(no_inline)] pub use num::{Signed, Unsigned, Primitive, Int, Float};
 #[doc(no_inline)] pub use num::{FloatMath, ToPrimitive, FromPrimitive};
-#[doc(no_inline)] pub use option::Expect;
 #[doc(no_inline)] pub use owned::Box;
 #[doc(no_inline)] pub use path::{GenericPath, Path, PosixPath, WindowsPath};
 #[doc(no_inline)] pub use ptr::RawPtr;
diff --git a/src/libstd/rt/env.rs b/src/libstd/rt/env.rs
index c9e5cae60e4..7271464d1e9 100644
--- a/src/libstd/rt/env.rs
+++ b/src/libstd/rt/env.rs
@@ -11,7 +11,7 @@
 //! Runtime environment settings
 
 use from_str::from_str;
-use option::{Some, None, Expect};
+use option::{Some, None};
 use os;
 use str::Str;
 
diff --git a/src/libstd/slice.rs b/src/libstd/slice.rs
index 8f66279a9a3..d6f63da09f2 100644
--- a/src/libstd/slice.rs
+++ b/src/libstd/slice.rs
@@ -296,7 +296,6 @@ impl<'a, T: Clone> CloneableVector<T> for &'a [T] {
     fn to_owned(&self) -> ~[T] {
         use RawVec = core::raw::Vec;
         use num::{CheckedAdd, CheckedMul};
-        use option::Expect;
 
         let len = self.len();
         let data_size = len.checked_mul(&mem::size_of::<T>());
diff --git a/src/libstd/vec.rs b/src/libstd/vec.rs
index 916ba083b3e..cdcee9464de 100644
--- a/src/libstd/vec.rs
+++ b/src/libstd/vec.rs
@@ -21,7 +21,7 @@ use mem;
 use num::{CheckedMul, CheckedAdd};
 use num;
 use ops::{Add, Drop};
-use option::{None, Option, Some, Expect};
+use option::{None, Option, Some};
 use ptr::RawPtr;
 use ptr;
 use raw::Slice;