aboutsummaryrefslogtreecommitdiff
path: root/vendor/rayon/src/lib.rs
diff options
context:
space:
mode:
Diffstat (limited to 'vendor/rayon/src/lib.rs')
-rw-r--r--vendor/rayon/src/lib.rs160
1 files changed, 0 insertions, 160 deletions
diff --git a/vendor/rayon/src/lib.rs b/vendor/rayon/src/lib.rs
deleted file mode 100644
index dc7fcc0..0000000
--- a/vendor/rayon/src/lib.rs
+++ /dev/null
@@ -1,160 +0,0 @@
-#![deny(missing_debug_implementations)]
-#![deny(missing_docs)]
-#![deny(unreachable_pub)]
-#![warn(rust_2018_idioms)]
-
-//! Data-parallelism library that makes it easy to convert sequential
-//! computations into parallel
-//!
-//! Rayon is lightweight and convenient for introducing parallelism into existing
-//! code. It guarantees data-race free executions and takes advantage of
-//! parallelism when sensible, based on work-load at runtime.
-//!
-//! # How to use Rayon
-//!
-//! There are two ways to use Rayon:
-//!
-//! - **High-level parallel constructs** are the simplest way to use Rayon and also
-//! typically the most efficient.
-//! - [Parallel iterators][iter module] make it easy to convert a sequential iterator to
-//! execute in parallel.
-//! - The [`ParallelIterator`] trait defines general methods for all parallel iterators.
-//! - The [`IndexedParallelIterator`] trait adds methods for iterators that support random
-//! access.
-//! - The [`par_sort`] method sorts `&mut [T]` slices (or vectors) in parallel.
-//! - [`par_extend`] can be used to efficiently grow collections with items produced
-//! by a parallel iterator.
-//! - **Custom tasks** let you divide your work into parallel tasks yourself.
-//! - [`join`] is used to subdivide a task into two pieces.
-//! - [`scope`] creates a scope within which you can create any number of parallel tasks.
-//! - [`ThreadPoolBuilder`] can be used to create your own thread pools or customize
-//! the global one.
-//!
-//! [iter module]: iter/index.html
-//! [`join`]: fn.join.html
-//! [`scope`]: fn.scope.html
-//! [`par_sort`]: slice/trait.ParallelSliceMut.html#method.par_sort
-//! [`par_extend`]: iter/trait.ParallelExtend.html#tymethod.par_extend
-//! [`ThreadPoolBuilder`]: struct.ThreadPoolBuilder.html
-//!
-//! # Basic usage and the Rayon prelude
-//!
-//! First, you will need to add `rayon` to your `Cargo.toml`.
-//!
-//! Next, to use parallel iterators or the other high-level methods,
-//! you need to import several traits. Those traits are bundled into
-//! the module [`rayon::prelude`]. It is recommended that you import
-//! all of these traits at once by adding `use rayon::prelude::*` at
-//! the top of each module that uses Rayon methods.
-//!
-//! These traits give you access to the `par_iter` method which provides
-//! parallel implementations of many iterative functions such as [`map`],
-//! [`for_each`], [`filter`], [`fold`], and [more].
-//!
-//! [`rayon::prelude`]: prelude/index.html
-//! [`map`]: iter/trait.ParallelIterator.html#method.map
-//! [`for_each`]: iter/trait.ParallelIterator.html#method.for_each
-//! [`filter`]: iter/trait.ParallelIterator.html#method.filter
-//! [`fold`]: iter/trait.ParallelIterator.html#method.fold
-//! [more]: iter/trait.ParallelIterator.html#provided-methods
-//! [`ParallelIterator`]: iter/trait.ParallelIterator.html
-//! [`IndexedParallelIterator`]: iter/trait.IndexedParallelIterator.html
-//!
-//! # Crate Layout
-//!
-//! Rayon extends many of the types found in the standard library with
-//! parallel iterator implementations. The modules in the `rayon`
-//! crate mirror [`std`] itself: so, e.g., the `option` module in
-//! Rayon contains parallel iterators for the `Option` type, which is
-//! found in [the `option` module of `std`]. Similarly, the
-//! `collections` module in Rayon offers parallel iterator types for
-//! [the `collections` from `std`]. You will rarely need to access
-//! these submodules unless you need to name iterator types
-//! explicitly.
-//!
-//! [the `option` module of `std`]: https://doc.rust-lang.org/std/option/index.html
-//! [the `collections` from `std`]: https://doc.rust-lang.org/std/collections/index.html
-//! [`std`]: https://doc.rust-lang.org/std/
-//!
-//! # Targets without threading
-//!
-//! Rayon has limited support for targets without `std` threading implementations.
-//! See the [`rayon_core`] documentation for more information about its global fallback.
-//!
-//! # Other questions?
-//!
-//! See [the Rayon FAQ][faq].
-//!
-//! [faq]: https://github.com/rayon-rs/rayon/blob/master/FAQ.md
-
-#[macro_use]
-mod delegate;
-
-#[macro_use]
-mod private;
-
-mod split_producer;
-
-pub mod array;
-pub mod collections;
-pub mod iter;
-pub mod option;
-pub mod prelude;
-pub mod range;
-pub mod range_inclusive;
-pub mod result;
-pub mod slice;
-pub mod str;
-pub mod string;
-pub mod vec;
-
-mod math;
-mod par_either;
-
-mod compile_fail;
-
-pub use rayon_core::FnContext;
-pub use rayon_core::ThreadBuilder;
-pub use rayon_core::ThreadPool;
-pub use rayon_core::ThreadPoolBuildError;
-pub use rayon_core::ThreadPoolBuilder;
-pub use rayon_core::{broadcast, spawn_broadcast, BroadcastContext};
-pub use rayon_core::{current_num_threads, current_thread_index, max_num_threads};
-pub use rayon_core::{in_place_scope, scope, Scope};
-pub use rayon_core::{in_place_scope_fifo, scope_fifo, ScopeFifo};
-pub use rayon_core::{join, join_context};
-pub use rayon_core::{spawn, spawn_fifo};
-pub use rayon_core::{yield_local, yield_now, Yield};
-
-/// We need to transmit raw pointers across threads. It is possible to do this
-/// without any unsafe code by converting pointers to usize or to AtomicPtr<T>
-/// then back to a raw pointer for use. We prefer this approach because code
-/// that uses this type is more explicit.
-///
-/// Unsafe code is still required to dereference the pointer, so this type is
-/// not unsound on its own, although it does partly lift the unconditional
-/// !Send and !Sync on raw pointers. As always, dereference with care.
-struct SendPtr<T>(*mut T);
-
-// SAFETY: !Send for raw pointers is not for safety, just as a lint
-unsafe impl<T: Send> Send for SendPtr<T> {}
-
-// SAFETY: !Sync for raw pointers is not for safety, just as a lint
-unsafe impl<T: Send> Sync for SendPtr<T> {}
-
-impl<T> SendPtr<T> {
- // Helper to avoid disjoint captures of `send_ptr.0`
- fn get(self) -> *mut T {
- self.0
- }
-}
-
-// Implement Clone without the T: Clone bound from the derive
-impl<T> Clone for SendPtr<T> {
- fn clone(&self) -> Self {
- *self
- }
-}
-
-// Implement Copy without the T: Copy bound from the derive
-impl<T> Copy for SendPtr<T> {}