about summary refs log tree commit diff
diff options
context:
space:
mode:
authorEduard Burtescu <edy.burt@gmail.com>2014-10-01 00:00:59 +0300
committerEduard Burtescu <edy.burt@gmail.com>2014-10-02 16:36:01 +0300
commitd07cd175daa24e25ce287ae013e5b6691c39dc36 (patch)
treed9fbfefbf978f02b414a3fd7e841f32943c94cc2
parent2487e164aeeeedaba78f597724a137959b1fb299 (diff)
downloadrust-d07cd175daa24e25ce287ae013e5b6691c39dc36.tar.gz
rust-d07cd175daa24e25ce287ae013e5b6691c39dc36.zip
std: remove gc module.
-rw-r--r--src/libstd/gc.rs156
-rw-r--r--src/libstd/lib.rs4
2 files changed, 0 insertions, 160 deletions
diff --git a/src/libstd/gc.rs b/src/libstd/gc.rs
deleted file mode 100644
index ecef8e9ed90..00000000000
--- a/src/libstd/gc.rs
+++ /dev/null
@@ -1,156 +0,0 @@
-// Copyright 2013 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.
-
-/*! Task-local garbage-collected boxes
-
-The `Gc` type provides shared ownership of an immutable value. Destruction is not deterministic, and
-will occur some time between every `Gc` handle being gone and the end of the task. The garbage
-collector is task-local so `Gc<T>` is not sendable.
-
-*/
-
-#![experimental]
-#![allow(experimental)]
-
-use clone::Clone;
-use cmp::{Ord, PartialOrd, Ordering, Eq, PartialEq};
-use default::Default;
-use fmt;
-use hash;
-use kinds::marker;
-use option::Option;
-use ops::Deref;
-use raw;
-
-/// Immutable garbage-collected pointer type
-#[lang="gc"]
-#[experimental = "Gc is currently based on reference-counting and will not collect cycles until \
-                  task annihilation. For now, cycles need to be broken manually by using `Rc<T>` \
-                  with a non-owning `Weak<T>` pointer. A tracing garbage collector is planned."]
-pub struct Gc<T> {
-    _ptr: *mut T,
-    marker: marker::NoSend,
-}
-
-#[unstable]
-impl<T> Clone for Gc<T> {
-    /// Clone the pointer only
-    #[inline]
-    fn clone(&self) -> Gc<T> { *self }
-}
-
-/// An value that represents the task-local managed heap.
-///
-/// Use this like `let foo = box(GC) Bar::new(...);`
-#[lang="managed_heap"]
-#[cfg(not(test))]
-pub static GC: () = ();
-
-impl<T: PartialEq + 'static> PartialEq for Gc<T> {
-    #[inline]
-    fn eq(&self, other: &Gc<T>) -> bool { *(*self) == *(*other) }
-    #[inline]
-    fn ne(&self, other: &Gc<T>) -> bool { *(*self) != *(*other) }
-}
-impl<T: PartialOrd + 'static> PartialOrd for Gc<T> {
-    #[inline]
-    fn partial_cmp(&self, other: &Gc<T>) -> Option<Ordering> {
-        (**self).partial_cmp(&**other)
-    }
-    #[inline]
-    fn lt(&self, other: &Gc<T>) -> bool { *(*self) < *(*other) }
-    #[inline]
-    fn le(&self, other: &Gc<T>) -> bool { *(*self) <= *(*other) }
-    #[inline]
-    fn ge(&self, other: &Gc<T>) -> bool { *(*self) >= *(*other) }
-    #[inline]
-    fn gt(&self, other: &Gc<T>) -> bool { *(*self) > *(*other) }
-}
-impl<T: Ord + 'static> Ord for Gc<T> {
-    #[inline]
-    fn cmp(&self, other: &Gc<T>) -> Ordering { (**self).cmp(&**other) }
-}
-impl<T: Eq + 'static> Eq for Gc<T> {}
-
-impl<T: 'static> Deref<T> for Gc<T> {
-    fn deref<'a>(&'a self) -> &'a T { &**self }
-}
-
-impl<T: Default + 'static> Default for Gc<T> {
-    fn default() -> Gc<T> {
-        box(GC) Default::default()
-    }
-}
-
-impl<T: 'static> raw::Repr<*const raw::GcBox<T>> for Gc<T> {}
-
-impl<S: hash::Writer, T: hash::Hash<S> + 'static> hash::Hash<S> for Gc<T> {
-    fn hash(&self, s: &mut S) {
-        (**self).hash(s)
-    }
-}
-
-impl<T: 'static + fmt::Show> fmt::Show for Gc<T> {
-    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
-        (**self).fmt(f)
-    }
-}
-
-#[cfg(test)]
-mod tests {
-    use prelude::*;
-    use super::*;
-    use cell::RefCell;
-
-    #[test]
-    fn test_managed_clone() {
-        let a = box(GC) 5i;
-        let b: Gc<int> = a.clone();
-        assert!(a == b);
-    }
-
-    #[test]
-    fn test_clone() {
-        let x = Gc::new(RefCell::new(5));
-        let y = x.clone();
-        *x.borrow().borrow_mut() = 20;
-        assert_eq!(*y.borrow().borrow(), 20);
-    }
-
-    #[test]
-    fn test_simple() {
-        let x = Gc::new(5);
-        assert_eq!(*x.borrow(), 5);
-    }
-
-    #[test]
-    fn test_simple_clone() {
-        let x = Gc::new(5);
-        let y = x.clone();
-        assert_eq!(*x.borrow(), 5);
-        assert_eq!(*y.borrow(), 5);
-    }
-
-    #[test]
-    fn test_ptr_eq() {
-        let x = Gc::new(5);
-        let y = x.clone();
-        let z = Gc::new(7);
-        assert!(x.ptr_eq(&x));
-        assert!(x.ptr_eq(&y));
-        assert!(!x.ptr_eq(&z));
-    }
-
-    #[test]
-    fn test_destructor() {
-        let x = Gc::new(box 5);
-        assert_eq!(**x.borrow(), 5);
-    }
-}
diff --git a/src/libstd/lib.rs b/src/libstd/lib.rs
index 82de55efad6..f6c37b6cfc3 100644
--- a/src/libstd/lib.rs
+++ b/src/libstd/lib.rs
@@ -137,7 +137,6 @@ extern crate rustrt;
 #[cfg(test)] pub use realstd::cmp;
 #[cfg(test)] pub use realstd::ty;
 #[cfg(test)] pub use realstd::boxed;
-#[cfg(test)] pub use realstd::gc;
 
 
 // NB: These reexports are in the order they should be listed in rustdoc
@@ -220,9 +219,6 @@ pub mod rand;
 
 pub mod ascii;
 
-#[cfg(not(test))]
-pub mod gc;
-
 pub mod time;
 
 /* Common traits */