| 1 | // Copyright 2018 Developers of the Rand project. |
| 2 | // |
| 3 | // Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or |
| 4 | // https://www.apache.org/licenses/LICENSE-2.0> or the MIT license |
| 5 | // <LICENSE-MIT or https://opensource.org/licenses/MIT>, at your |
| 6 | // option. This file may not be copied, modified, or distributed |
| 7 | // except according to those terms. |
| 8 | |
| 9 | //! Weighted index sampling |
| 10 | //! |
| 11 | //! This module is deprecated. Use [`crate::distributions::WeightedIndex`] and |
| 12 | //! [`crate::distributions::WeightedError`] instead. |
| 13 | |
| 14 | pub use super::{WeightedIndex, WeightedError}; |
| 15 | |
| 16 | #[allow (missing_docs)] |
| 17 | #[deprecated (since = "0.8.0" , note = "moved to rand_distr crate" )] |
| 18 | pub mod alias_method { |
| 19 | // This module exists to provide a deprecation warning which minimises |
| 20 | // compile errors, but still fails to compile if ever used. |
| 21 | use core::marker::PhantomData; |
| 22 | use alloc::vec::Vec; |
| 23 | use super::WeightedError; |
| 24 | |
| 25 | #[derive (Debug)] |
| 26 | pub struct WeightedIndex<W: Weight> { |
| 27 | _phantom: PhantomData<W>, |
| 28 | } |
| 29 | impl<W: Weight> WeightedIndex<W> { |
| 30 | pub fn new(_weights: Vec<W>) -> Result<Self, WeightedError> { |
| 31 | Err(WeightedError::NoItem) |
| 32 | } |
| 33 | } |
| 34 | |
| 35 | pub trait Weight {} |
| 36 | macro_rules! impl_weight { |
| 37 | () => {}; |
| 38 | ($T:ident, $($more:ident,)*) => { |
| 39 | impl Weight for $T {} |
| 40 | impl_weight!($($more,)*); |
| 41 | }; |
| 42 | } |
| 43 | impl_weight!(f64, f32,); |
| 44 | impl_weight!(u8, u16, u32, u64, usize,); |
| 45 | impl_weight!(i8, i16, i32, i64, isize,); |
| 46 | impl_weight!(u128, i128,); |
| 47 | } |
| 48 | |