66
66
//! struct MyF32(f32);
67
67
//!
68
68
//! #[derive(Clone, Copy, Debug)]
69
- //! struct UniformMyF32 {
70
- //! inner: UniformFloat<f32>,
71
- //! }
69
+ //! struct UniformMyF32(UniformFloat<f32>);
72
70
//!
73
71
//! impl UniformSampler for UniformMyF32 {
74
72
//! type X = MyF32;
75
73
//! fn new<B1, B2>(low: B1, high: B2) -> Self
76
74
//! where B1: SampleBorrow<Self::X> + Sized,
77
75
//! B2: SampleBorrow<Self::X> + Sized
78
76
//! {
79
- //! UniformMyF32 {
80
- //! inner: UniformFloat::<f32>::new(low.borrow().0, high.borrow().0),
81
- //! }
77
+ //! UniformMyF32(UniformFloat::<f32>::new(low.borrow().0, high.borrow().0))
82
78
//! }
83
79
//! fn new_inclusive<B1, B2>(low: B1, high: B2) -> Self
84
80
//! where B1: SampleBorrow<Self::X> + Sized,
87
83
//! UniformSampler::new(low, high)
88
84
//! }
89
85
//! fn sample<R: Rng + ?Sized>(&self, rng: &mut R) -> Self::X {
90
- //! MyF32(self.inner .sample(rng))
86
+ //! MyF32(self.0 .sample(rng))
91
87
//! }
92
88
//! }
93
89
//!
@@ -166,9 +162,7 @@ use packed_simd::*;
166
162
/// [`new`]: Uniform::new
167
163
/// [`new_inclusive`]: Uniform::new_inclusive
168
164
#[ derive( Clone , Copy , Debug ) ]
169
- pub struct Uniform < X : SampleUniform > {
170
- inner : X :: Sampler ,
171
- }
165
+ pub struct Uniform < X : SampleUniform > ( X :: Sampler ) ;
172
166
173
167
impl < X : SampleUniform > Uniform < X > {
174
168
/// Create a new `Uniform` instance which samples uniformly from the half
@@ -177,7 +171,7 @@ impl<X: SampleUniform> Uniform<X> {
177
171
where B1 : SampleBorrow < X > + Sized ,
178
172
B2 : SampleBorrow < X > + Sized
179
173
{
180
- Uniform { inner : X :: Sampler :: new ( low, high) }
174
+ Uniform ( X :: Sampler :: new ( low, high) )
181
175
}
182
176
183
177
/// Create a new `Uniform` instance which samples uniformly from the closed
@@ -186,13 +180,13 @@ impl<X: SampleUniform> Uniform<X> {
186
180
where B1 : SampleBorrow < X > + Sized ,
187
181
B2 : SampleBorrow < X > + Sized
188
182
{
189
- Uniform { inner : X :: Sampler :: new_inclusive ( low, high) }
183
+ Uniform ( X :: Sampler :: new_inclusive ( low, high) )
190
184
}
191
185
}
192
186
193
187
impl < X : SampleUniform > Distribution < X > for Uniform < X > {
194
188
fn sample < R : Rng + ?Sized > ( & self , rng : & mut R ) -> X {
195
- self . inner . sample ( rng)
189
+ self . 0 . sample ( rng)
196
190
}
197
191
}
198
192
@@ -1211,18 +1205,14 @@ mod tests {
1211
1205
x : f32 ,
1212
1206
}
1213
1207
#[ derive( Clone , Copy , Debug ) ]
1214
- struct UniformMyF32 {
1215
- inner : UniformFloat < f32 > ,
1216
- }
1208
+ struct UniformMyF32 ( UniformFloat < f32 > ) ;
1217
1209
impl UniformSampler for UniformMyF32 {
1218
1210
type X = MyF32 ;
1219
1211
fn new < B1 , B2 > ( low : B1 , high : B2 ) -> Self
1220
1212
where B1 : SampleBorrow < Self :: X > + Sized ,
1221
1213
B2 : SampleBorrow < Self :: X > + Sized
1222
1214
{
1223
- UniformMyF32 {
1224
- inner : UniformFloat :: < f32 > :: new ( low. borrow ( ) . x , high. borrow ( ) . x ) ,
1225
- }
1215
+ UniformMyF32 ( UniformFloat :: < f32 > :: new ( low. borrow ( ) . x , high. borrow ( ) . x ) )
1226
1216
}
1227
1217
fn new_inclusive < B1 , B2 > ( low : B1 , high : B2 ) -> Self
1228
1218
where B1 : SampleBorrow < Self :: X > + Sized ,
@@ -1231,7 +1221,7 @@ mod tests {
1231
1221
UniformSampler :: new ( low, high)
1232
1222
}
1233
1223
fn sample < R : Rng + ?Sized > ( & self , rng : & mut R ) -> Self :: X {
1234
- MyF32 { x : self . inner . sample ( rng) }
1224
+ MyF32 { x : self . 0 . sample ( rng) }
1235
1225
}
1236
1226
}
1237
1227
impl SampleUniform for MyF32 {
@@ -1250,21 +1240,21 @@ mod tests {
1250
1240
#[ test]
1251
1241
fn test_uniform_from_std_range ( ) {
1252
1242
let r = Uniform :: from ( 2u32 ..7 ) ;
1253
- assert_eq ! ( r. inner . low, 2 ) ;
1254
- assert_eq ! ( r. inner . range, 5 ) ;
1243
+ assert_eq ! ( r. 0 . low, 2 ) ;
1244
+ assert_eq ! ( r. 0 . range, 5 ) ;
1255
1245
let r = Uniform :: from ( 2.0f64 ..7.0 ) ;
1256
- assert_eq ! ( r. inner . low, 2.0 ) ;
1257
- assert_eq ! ( r. inner . scale, 5.0 ) ;
1246
+ assert_eq ! ( r. 0 . low, 2.0 ) ;
1247
+ assert_eq ! ( r. 0 . scale, 5.0 ) ;
1258
1248
}
1259
1249
1260
1250
#[ test]
1261
1251
fn test_uniform_from_std_range_inclusive ( ) {
1262
1252
let r = Uniform :: from ( 2u32 ..=6 ) ;
1263
- assert_eq ! ( r. inner . low, 2 ) ;
1264
- assert_eq ! ( r. inner . range, 5 ) ;
1253
+ assert_eq ! ( r. 0 . low, 2 ) ;
1254
+ assert_eq ! ( r. 0 . range, 5 ) ;
1265
1255
let r = Uniform :: from ( 2.0f64 ..=7.0 ) ;
1266
- assert_eq ! ( r. inner . low, 2.0 ) ;
1267
- assert ! ( r. inner . scale > 5.0 ) ;
1268
- assert ! ( r. inner . scale < 5.0 + 1e-14 ) ;
1256
+ assert_eq ! ( r. 0 . low, 2.0 ) ;
1257
+ assert ! ( r. 0 . scale > 5.0 ) ;
1258
+ assert ! ( r. 0 . scale < 5.0 + 1e-14 ) ;
1269
1259
}
1270
1260
}
0 commit comments