librespot/src/util/mod.rs

76 lines
1.4 KiB
Rust
Raw Normal View History

2015-06-23 14:38:29 +00:00
use rand::{Rng,Rand};
use time;
2015-06-23 14:38:29 +00:00
mod int128;
mod spotify_id;
mod arcvec;
2015-06-23 17:34:48 +00:00
mod subfile;
2015-06-23 14:38:29 +00:00
pub use util::int128::u128;
pub use util::spotify_id::{SpotifyId, FileId};
pub use util::arcvec::ArcVec;
2015-06-23 17:34:48 +00:00
pub use util::subfile::Subfile;
2015-06-23 14:38:29 +00:00
#[macro_export]
macro_rules! eprintln(
($($arg:tt)*) => (
{
use std::io::Write;
writeln!(&mut ::std::io::stderr(), $($arg)* ).unwrap()
}
)
);
#[macro_export]
macro_rules! eprint(
($($arg:tt)*) => (
{
use std::io::Write;
write!(&mut ::std::io::stderr(), $($arg)* ).unwrap()
}
)
);
pub fn rand_vec<G: Rng, R: Rand>(rng: &mut G, size: usize) -> Vec<R> {
let mut vec = Vec::with_capacity(size);
for _ in 0..size {
vec.push(R::rand(rng));
}
return vec
}
pub mod version {
include!(concat!(env!("OUT_DIR"), "/version.rs"));
pub fn version_string() -> String {
format!("librespot-{}", short_sha())
}
}
pub fn hexdump(data: &[u8]) {
for b in data.iter() {
eprint!("{:02X} ", b);
}
eprintln!("");
}
pub trait IgnoreExt {
fn ignore(self);
}
impl <T, E> IgnoreExt for Result<T, E> {
fn ignore(self) {
match self {
Ok(_) => (),
Err(_) => (),
}
}
}
pub fn now_ms() -> i64 {
let ts = time::now_utc().to_timespec();
ts.sec * 1000 + ts.nsec as i64 / 1000000
}