Skip to content

Commit c6105c9

Browse files
committed
no copy/clone
1 parent 663fa29 commit c6105c9

File tree

2 files changed

+10
-9
lines changed

2 files changed

+10
-9
lines changed

src/npyffi/random.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
use std::ffi::c_void;
22

33
#[repr(C)]
4-
#[derive(Debug, Clone, Copy)] // TODO: can it be Clone and/or Copy?
4+
#[derive(Debug)]
55
pub struct npy_bitgen {
66
pub state: *mut c_void,
77
pub next_uint64: unsafe extern "C" fn(*mut c_void) -> super::npy_uint64, //nogil

src/random.rs

Lines changed: 9 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -162,30 +162,31 @@ impl<'py> PyBitGeneratorGuard {
162162
}
163163

164164
/// Returns the next random unsigned 64 bit integer.
165-
pub fn next_uint64(&mut self) -> u64 {
165+
pub fn next_u64(&mut self) -> u64 {
166166
unsafe {
167-
let bitgen = *self.raw_bitgen.as_ptr();
167+
// TODO: maybe use pointer offsets instead of `mut`
168+
let bitgen = self.raw_bitgen.as_mut();
168169
(bitgen.next_uint64)(bitgen.state)
169170
}
170171
}
171172
/// Returns the next random unsigned 32 bit integer.
172-
pub fn next_uint32(&mut self) -> u32 {
173+
pub fn next_u32(&mut self) -> u32 {
173174
unsafe {
174-
let bitgen = *self.raw_bitgen.as_ptr();
175+
let bitgen = self.raw_bitgen.as_mut();
175176
(bitgen.next_uint32)(bitgen.state)
176177
}
177178
}
178179
/// Returns the next random double.
179180
pub fn next_double(&mut self) -> libc::c_double {
180181
unsafe {
181-
let bitgen = *self.raw_bitgen.as_ptr();
182+
let bitgen = self.raw_bitgen.as_mut();
182183
(bitgen.next_double)(bitgen.state)
183184
}
184185
}
185186
/// Returns the next raw value (can be used for testing).
186187
pub fn next_raw(&mut self) -> u64 {
187188
unsafe {
188-
let bitgen = *self.raw_bitgen.as_ptr();
189+
let bitgen = self.raw_bitgen.as_mut();
189190
(bitgen.next_raw)(bitgen.state)
190191
}
191192
}
@@ -194,10 +195,10 @@ impl<'py> PyBitGeneratorGuard {
194195
#[cfg(feature = "rand")]
195196
impl rand::RngCore for PyBitGeneratorGuard {
196197
fn next_u32(&mut self) -> u32 {
197-
self.next_uint32()
198+
self.next_u32()
198199
}
199200
fn next_u64(&mut self) -> u64 {
200-
self.next_uint64()
201+
self.next_u64()
201202
}
202203
fn fill_bytes(&mut self, dst: &mut [u8]) {
203204
rand::rand_core::impls::fill_bytes_via_next(self, dst)

0 commit comments

Comments
 (0)