about summary refs log tree commit diff
path: root/src/test/compile-fail/task-rng-isnt-sendable.rs
AgeCommit message (Collapse)AuthorLines
2017-11-08std: Remove `rand` crate and moduleAlex Crichton-21/+0
This commit removes the `rand` crate from the standard library facade as well as the `__rand` module in the standard library. Neither of these were used in any meaningful way in the standard library itself. The only need for randomness in libstd is to initialize the thread-local keys of a `HashMap`, and that unconditionally used `OsRng` defined in the standard library anyway. The cruft of the `rand` crate and the extra `rand` support in the standard library makes libstd slightly more difficult to port to new platforms, namely WebAssembly which doesn't have any randomness at all (without interfacing with JS). The purpose of this commit is to clarify and streamline randomness in libstd, focusing on how it's only required in one location, hashmap seeds. Note that the `rand` crate out of tree has almost always been a drop-in replacement for the `rand` crate in-tree, so any usage (accidental or purposeful) of the crate in-tree should switch to the `rand` crate on crates.io. This then also has the further benefit of avoiding duplication (mostly) between the two crates!
2016-11-28rustc: rework stability to be on-demand for type-directed lookup.Eduard Burtescu-0/+2
2016-09-01Fix test `compile-fail/task-rng-isnt-sendable.rs`.Jeffrey Seyfried-2/+2
2016-08-18Fix fallout in tests.Jeffrey Seyfried-1/+0
2016-04-05suggest adding a where-clause when that can helpAriel Ben-Yehuda-1/+1
suggest adding a where-clause when there is an unmet trait-bound that can be satisfied if some type can implement it.
2016-03-30Fix fallout in testsJeffrey Seyfried-1/+1
2016-02-26Fix fallout in testsJeffrey Seyfried-1/+1
2015-01-16Don't use NoSend/NoSync in testsFlavio Percoco-1/+0
2015-01-07markers -> markerNick Cameron-2/+2
2015-01-07Change `std::kinds` to `std::markers`; flatten `std::kinds::marker`Nick Cameron-2/+2
[breaking-change]
2014-12-28Rename TaskRng to ThreadRngSimonas Kazlauskas-2/+2
Since runtime is removed, rust has no tasks anymore and everything is moving from being task-* to thread-*. Let’s rename TaskRng as well! * Rename TaskRng to ThreadRng * Rename task_rng to thread_rng [breaking-change]
2014-12-26Keep track of the whole error chainFlavio Percoco-0/+1
2014-09-15Update error messages in compile-fail testsNiko Matsakis-1/+1
2014-05-29std: Recreate a `rand` moduleAlex Crichton-3/+3
This commit shuffles around some of the `rand` code, along with some reorganization. The new state of the world is as follows: * The librand crate now only depends on libcore. This interface is experimental. * The standard library has a new module, `std::rand`. This interface will eventually become stable. Unfortunately, this entailed more of a breaking change than just shuffling some names around. The following breaking changes were made to the rand library: * Rng::gen_vec() was removed. This has been replaced with Rng::gen_iter() which will return an infinite stream of random values. Previous behavior can be regained with `rng.gen_iter().take(n).collect()` * Rng::gen_ascii_str() was removed. This has been replaced with Rng::gen_ascii_chars() which will return an infinite stream of random ascii characters. Similarly to gen_iter(), previous behavior can be emulated with `rng.gen_ascii_chars().take(n).collect()` * {IsaacRng, Isaac64Rng, XorShiftRng}::new() have all been removed. These all relied on being able to use an OSRng for seeding, but this is no longer available in librand (where these types are defined). To retain the same functionality, these types now implement the `Rand` trait so they can be generated with a random seed from another random number generator. This allows the stdlib to use an OSRng to create seeded instances of these RNGs. * Rand implementations for `Box<T>` and `@T` were removed. These seemed to be pretty rare in the codebase, and it allows for librand to not depend on liballoc. Additionally, other pointer types like Rc<T> and Arc<T> were not supported. If this is undesirable, librand can depend on liballoc and regain these implementations. * The WeightedChoice structure is no longer built with a `Vec<Weighted<T>>`, but rather a `&mut [Weighted<T>]`. This means that the WeightedChoice structure now has a lifetime associated with it. * The `sample` method on `Rng` has been moved to a top-level function in the `rand` module due to its dependence on `Vec`. cc #13851 [breaking-change]
2014-03-12std: Move rand to librand.Huon Wilson-2/+4
This functionality is not super-core and so doesn't need to be included in std. It's possible that std may need rand (it does a little bit now, for io::test) in which case the functionality required could be moved to a secret hidden module and reexposed by librand. Unfortunately, using #[deprecated] here is hard: there's too much to mock to make it feasible, since we have to ensure that programs still typecheck to reach the linting phase.
2013-11-22std::rand: move TaskRng off @mut.Huon Wilson-0/+18
Replace with some unsafe code by storing a pointer into TLS-owned heap data.