diff --git a/src/convolution.rs b/src/convolution.rs index 9576e3e..91b7b33 100644 --- a/src/convolution.rs +++ b/src/convolution.rs @@ -8,9 +8,9 @@ macro_rules! modulus { const VALUE: u32 = $name as _; const HINT_VALUE_IS_PRIME: bool = true; - fn butterfly_cache() -> &'static ::std::thread::LocalKey<::std::cell::RefCell<::std::option::Option>>> { + fn butterfly_cache() -> &'static ::std::thread::LocalKey<::std::cell::RefCell<::std::option::Option<$crate::modint::ButterflyCache>>> { thread_local! { - static BUTTERFLY_CACHE: ::std::cell::RefCell<::std::option::Option>> = ::std::default::Default::default(); + static BUTTERFLY_CACHE: ::std::cell::RefCell<::std::option::Option<$crate::modint::ButterflyCache<$name>>> = ::std::default::Default::default(); } &BUTTERFLY_CACHE } @@ -19,7 +19,7 @@ macro_rules! modulus { }; } -use crate::{ +use super::{ internal_bit, internal_math, modint::{ButterflyCache, Modulus, RemEuclidU32, StaticModInt}, }; @@ -232,10 +232,7 @@ fn prepare() -> ButterflyCache { #[cfg(test)] mod tests { - use crate::{ - modint::{Mod998244353, Modulus, StaticModInt}, - RemEuclidU32, - }; + use super::super::modint::{Mod998244353, Modulus, RemEuclidU32, StaticModInt}; use rand::{rngs::ThreadRng, Rng as _}; use std::{ convert::{TryFrom, TryInto as _}, diff --git a/src/internal_math.rs b/src/internal_math.rs index 515191c..ce1aaa8 100644 --- a/src/internal_math.rs +++ b/src/internal_math.rs @@ -239,7 +239,7 @@ pub(crate) fn primitive_root(m: i32) -> i32 { mod tests { #![allow(clippy::unreadable_literal)] #![allow(clippy::cognitive_complexity)] - use crate::internal_math::{inv_gcd, is_prime, pow_mod, primitive_root, safe_mod, Barrett}; + use super::{inv_gcd, is_prime, pow_mod, primitive_root, safe_mod, Barrett}; use std::collections::HashSet; #[test] diff --git a/src/internal_queue.rs b/src/internal_queue.rs index 5e51e9a..5266591 100644 --- a/src/internal_queue.rs +++ b/src/internal_queue.rs @@ -51,7 +51,7 @@ impl SimpleQueue { #[cfg(test)] mod test { - use crate::internal_queue::SimpleQueue; + use super::SimpleQueue; #[allow(clippy::cognitive_complexity)] #[test] diff --git a/src/lazysegtree.rs b/src/lazysegtree.rs index 47020a8..540fbab 100644 --- a/src/lazysegtree.rs +++ b/src/lazysegtree.rs @@ -1,5 +1,5 @@ -use crate::internal_bit::ceil_pow2; -use crate::Monoid; +use super::internal_bit::ceil_pow2; +use super::Monoid; pub trait MapMonoid { type M: Monoid; @@ -314,7 +314,8 @@ where #[cfg(test)] mod tests { - use crate::{LazySegtree, MapMonoid, Max}; + use super::super::segtree::Max; + use super::{LazySegtree, MapMonoid}; struct MaxAdd; impl MapMonoid for MaxAdd { diff --git a/src/math.rs b/src/math.rs index 5f2f1d5..272bbe9 100644 --- a/src/math.rs +++ b/src/math.rs @@ -1,4 +1,4 @@ -use crate::internal_math; +use super::internal_math; use std::mem::swap; diff --git a/src/maxflow.rs b/src/maxflow.rs index 93b337c..6f884c4 100644 --- a/src/maxflow.rs +++ b/src/maxflow.rs @@ -1,6 +1,6 @@ #![allow(dead_code)] -use crate::internal_queue::SimpleQueue; -use crate::internal_type_traits::Integral; +use super::internal_queue::SimpleQueue; +use super::internal_type_traits::Integral; use std::cmp::min; use std::iter; @@ -224,7 +224,7 @@ struct _Edge { #[cfg(test)] mod test { - use crate::{Edge, MfGraph}; + use super::{Edge, MfGraph}; #[test] fn test_max_flow_wikipedia() { diff --git a/src/mincostflow.rs b/src/mincostflow.rs index 158a9e8..aafc45e 100644 --- a/src/mincostflow.rs +++ b/src/mincostflow.rs @@ -1,4 +1,4 @@ -use crate::internal_type_traits::Integral; +use super::internal_type_traits::Integral; pub struct MinCostFlowEdge { pub from: usize, diff --git a/src/modint.rs b/src/modint.rs index 8aa5220..1347c21 100644 --- a/src/modint.rs +++ b/src/modint.rs @@ -48,7 +48,7 @@ //! [`ModInt998244353`]: ./type.ModInt998244353.html //! [`ModInt`]: ./type.ModInt.html -use crate::internal_math; +use super::internal_math; use std::{ cell::RefCell, convert::{Infallible, TryInto as _}, @@ -1050,7 +1050,7 @@ impl_folding! { #[cfg(test)] mod tests { - use crate::modint::ModInt1000000007; + use super::ModInt1000000007; #[test] fn static_modint_new() { diff --git a/src/scc.rs b/src/scc.rs index 2eff835..d33c15b 100644 --- a/src/scc.rs +++ b/src/scc.rs @@ -1,4 +1,4 @@ -use crate::internal_scc; +use super::internal_scc; pub struct SccGraph { internal: internal_scc::SccGraph, diff --git a/src/segtree.rs b/src/segtree.rs index b543aa3..9d6b820 100644 --- a/src/segtree.rs +++ b/src/segtree.rs @@ -1,5 +1,5 @@ -use crate::internal_bit::ceil_pow2; -use crate::internal_type_traits::{BoundedAbove, BoundedBelow, One, Zero}; +use super::internal_bit::ceil_pow2; +use super::internal_type_traits::{BoundedAbove, BoundedBelow, One, Zero}; use std::cmp::{max, min}; use std::convert::Infallible; use std::marker::PhantomData; @@ -238,8 +238,8 @@ where #[cfg(test)] mod tests { - use crate::segtree::Max; - use crate::Segtree; + use super::super::Segtree; + use super::Max; #[test] fn test_max_segtree() { diff --git a/src/twosat.rs b/src/twosat.rs index ac5f8b6..213d486 100644 --- a/src/twosat.rs +++ b/src/twosat.rs @@ -1,4 +1,4 @@ -use crate::internal_scc; +use super::internal_scc; pub struct TwoSat { n: usize,