1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
#![deny(missing_docs)]
mod murmur3_32;
mod murmur3_x64_128;
mod murmur3_x86_128;
use std::io::{ErrorKind, Read, Result};
pub use self::murmur3_32::*;
pub use self::murmur3_x64_128::*;
pub use self::murmur3_x86_128::*;
fn copy_into_array<A, T>(slice: &[T]) -> A
where
A: Default + AsMut<[T]>,
T: Copy,
{
let mut a = A::default();
<A as AsMut<[T]>>::as_mut(&mut a).copy_from_slice(slice);
a
}
fn read_bytes<R>(source: &mut R, buf: &mut [u8]) -> Result<usize>
where
R: Read,
{
let mut offset = 0;
loop {
match source.read(&mut buf[offset..]) {
Ok(0) => {
return Ok(offset);
}
Ok(n) => {
offset += n;
if offset == buf.len() {
return Ok(offset);
}
}
Err(ref e) if e.kind() == ErrorKind::Interrupted => {}
Err(e) => {
return Err(e);
}
}
}
}