pub mod data;
pub mod mini_data;
pub mod params;
#[macro_export]
macro_rules! R34 {
($(p = $positive_tags:expr)? $(,n = $negative_tags:expr)? $(,limit = $limit:expr)? $(,page = $page:expr)?) => {{
R34Params::init()
$(.limit($limit))?
$(.positive_tags($positive_tags))?
$(.negative_tags($negative_tags))?
}};
($(id = $id:expr)?) => {{
R34Params::init()
$(.id($id))?
}};
(D; $(p = $positive_tags:expr)? $(,n = $negative_tags:expr)? $(,limit = $limit:expr)? $(,page = $page:expr)?) => {{
R34Params::init()
$(.limit($limit))?
$(.positive_tags($positive_tags))?
$(.negative_tags($negative_tags))?
.download().await
}};
(D; $(id = $id:expr)?) => {{
R34Params::init()
$(.id($id))?.download().await
}};
(U; $(p = $positive_tags:expr)? $(,n = $negative_tags:expr)? $(,limit = $limit:expr)? $(,page = $page:expr)?) => {{
R34Params::init()
$(.limit($limit))?
$(.positive_tags($positive_tags))?
$(.negative_tags($negative_tags))?
.url_generate()
}};
(U; $(id = $id:expr)?) => {{
R34Params::init()
$(.id($id))?
.url_generate()
}};
(R;) => {
R34Params::init()
.gen_id()
};
(R; D) => {
R34Params::init()
.gen_id()
.download().await
};
(R; U) => {
R34Params::init()
.gen_id()
.url_generate()
}
}
#[cfg(feature = "rand")]
#[macro_export]
macro_rules! random_usize {
($max:expr) => {{
use std::time::SystemTime;
use tinyrand::{Rand, Seeded};
let time = SystemTime::now()
.duration_since(SystemTime::UNIX_EPOCH)
.unwrap()
.as_nanos();
let mut rand = tinyrand::StdRand::seed(((time >> 64) ^ time) as u64);
rand.next_lim_usize($max)
}};
}
#[cfg(feature = "rand")]
#[macro_export]
macro_rules! random_usize_vec {
($vec:expr, $len:expr) => {{
use $crate::random_usize;
assert!($len <= $vec.len(), "given len is more than max len of vec");
if $len == 0 || $vec.len() == 0 {
return vec![];
}
let mut temp = vec![];
let mut indices = std::collections::HashSet::new();
while indices.len() < $len {
let index = random_usize!($vec.len());
indices.insert(index);
}
for index in indices {
temp.push($vec[index]);
}
temp
}};
}
#[cfg(feature = "rand")]
#[macro_export]
macro_rules! random_usize_vec_cloned {
($vec:expr, $len:expr) => {{
use $crate::random_usize;
assert!($len <= $vec.len(), "given len is more than max len of vec");
if $len == 0 || $vec.len() == 0 {
return vec![].into();
}
let mut temp = vec![];
let mut indices = std::collections::HashSet::new();
while indices.len() < $len {
let index = random_usize!($vec.len());
indices.insert(index);
}
for index in indices {
temp.push($vec[index].clone());
}
temp.into()
}};
}