diff options
| author | Mark Simulacrum <mark.simulacrum@gmail.com> | 2018-01-21 19:28:55 -0700 |
|---|---|---|
| committer | Mark Simulacrum <mark.simulacrum@gmail.com> | 2018-01-28 16:01:32 -0700 |
| commit | caa42e11bb6b7aea210ced552a157fa7de100d68 (patch) | |
| tree | 4dc5681fee11b261d6ce2139d192e2c6c85591cf /src | |
| parent | 505ef7bc069d9def137c3c469ee8bdd487882730 (diff) | |
| download | rust-caa42e11bb6b7aea210ced552a157fa7de100d68.tar.gz rust-caa42e11bb6b7aea210ced552a157fa7de100d68.zip | |
Remove VecCell
Diffstat (limited to 'src')
| -rw-r--r-- | src/librustc_data_structures/lib.rs | 1 | ||||
| -rw-r--r-- | src/librustc_data_structures/veccell/mod.rs | 47 |
2 files changed, 0 insertions, 48 deletions
diff --git a/src/librustc_data_structures/lib.rs b/src/librustc_data_structures/lib.rs index 37afe1bb066..33d760d0a14 100644 --- a/src/librustc_data_structures/lib.rs +++ b/src/librustc_data_structures/lib.rs @@ -69,7 +69,6 @@ pub mod transitive_relation; pub mod unify; pub mod fx; pub mod tuple_slice; -pub mod veccell; pub mod control_flow_graph; pub mod flock; pub mod sync; diff --git a/src/librustc_data_structures/veccell/mod.rs b/src/librustc_data_structures/veccell/mod.rs deleted file mode 100644 index 054eee8829a..00000000000 --- a/src/librustc_data_structures/veccell/mod.rs +++ /dev/null @@ -1,47 +0,0 @@ -// Copyright 2012-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. - -use std::cell::UnsafeCell; -use std::mem; - -pub struct VecCell<T> { - data: UnsafeCell<Vec<T>>, -} - -impl<T> VecCell<T> { - pub fn with_capacity(capacity: usize) -> VecCell<T> { - VecCell { data: UnsafeCell::new(Vec::with_capacity(capacity)) } - } - - #[inline] - pub fn push(&self, data: T) -> usize { - // The logic here, and in `swap` below, is that the `push` - // method on the vector will not recursively access this - // `VecCell`. Therefore, we can temporarily obtain mutable - // access, secure in the knowledge that even if aliases exist - // -- indeed, even if aliases are reachable from within the - // vector -- they will not be used for the duration of this - // particular fn call. (Note that we also are relying on the - // fact that `VecCell` is not `Sync`.) - unsafe { - let v = self.data.get(); - (*v).push(data); - (*v).len() - } - } - - pub fn swap(&self, mut data: Vec<T>) -> Vec<T> { - unsafe { - let v = self.data.get(); - mem::swap(&mut *v, &mut data); - } - data - } -} |
