diff --git a/Cargo.lock b/Cargo.lock index 024eb4021..2f7d8207a 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1390,10 +1390,6 @@ dependencies = [ "either", ] -[[package]] -name = "iterutil" -version = "0.0.94" - [[package]] name = "itoa" version = "1.0.10" @@ -2269,7 +2265,6 @@ dependencies = [ "half", "hashbrown 0.14.5", "indexmap", - "iterutil", "num", "num-traits", "num_cpus", @@ -2288,6 +2283,7 @@ dependencies = [ "serde_json", "similar-asserts", "smallvec", + "stdutil", "strsim", "textwrap", "tokio", @@ -3036,6 +3032,10 @@ version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a2eb9349b6444b326872e140eb1cf5e7c522154d69e7a0ffb0fb81c06b37543f" +[[package]] +name = "stdutil" +version = "0.0.94" + [[package]] name = "stringprep" version = "0.1.5" diff --git a/crates/rayexec_execution/Cargo.toml b/crates/rayexec_execution/Cargo.toml index f895cb44a..bb23dab95 100644 --- a/crates/rayexec_execution/Cargo.toml +++ b/crates/rayexec_execution/Cargo.toml @@ -10,7 +10,7 @@ rayexec_parser = { path = "../rayexec_parser" } # rayexec_bullet = { path = "../rayexec_bullet" } rayexec_io = { path = "../rayexec_io" } fmtutil = { path = "../fmtutil" } -iterutil = { path = "../iterutil" } +stdutil = { path = "../stdutil" } # stackutil = { path = "../stackutil" } TODO: psm hash issues when compiling to wasm on macos ahash = { workspace = true } diff --git a/crates/rayexec_execution/src/arrays/array/exp.rs b/crates/rayexec_execution/src/arrays/array/exp.rs index 3e106d0ba..adee68af3 100644 --- a/crates/rayexec_execution/src/arrays/array/exp.rs +++ b/crates/rayexec_execution/src/arrays/array/exp.rs @@ -1,6 +1,6 @@ use half::f16; -use iterutil::{IntoExactSizeIterator, TryFromExactSizeIterator}; use rayexec_error::{not_implemented, RayexecError, Result}; +use stdutil::iter::{IntoExactSizeIterator, TryFromExactSizeIterator}; use super::array_data::ArrayData; use super::flat::FlatArrayView; diff --git a/crates/rayexec_execution/src/arrays/batch_exp.rs b/crates/rayexec_execution/src/arrays/batch_exp.rs index 7405a372e..0888785ff 100644 --- a/crates/rayexec_execution/src/arrays/batch_exp.rs +++ b/crates/rayexec_execution/src/arrays/batch_exp.rs @@ -1,5 +1,5 @@ -use iterutil::IntoExactSizeIterator; use rayexec_error::{RayexecError, Result}; +use stdutil::iter::IntoExactSizeIterator; use super::array::exp::Array; use super::array::selection::Selection; @@ -139,7 +139,7 @@ where #[cfg(test)] mod tests { - use iterutil::TryFromExactSizeIterator; + use stdutil::iter::TryFromExactSizeIterator; use super::*; diff --git a/crates/rayexec_execution/src/arrays/compute/cast/array.rs b/crates/rayexec_execution/src/arrays/compute/cast/array.rs index 2de9f9731..2156a127f 100644 --- a/crates/rayexec_execution/src/arrays/compute/cast/array.rs +++ b/crates/rayexec_execution/src/arrays/compute/cast/array.rs @@ -1,6 +1,6 @@ use std::ops::Mul; -use iterutil::IntoExactSizeIterator; +use stdutil::iter::IntoExactSizeIterator; use num::{CheckedDiv, CheckedMul, Float, NumCast, PrimInt, ToPrimitive}; use rayexec_error::{RayexecError, Result}; @@ -840,7 +840,7 @@ where #[cfg(test)] mod tests { - use iterutil::TryFromExactSizeIterator; + use stdutil::iter::TryFromExactSizeIterator; use super::*; use crate::arrays::datatype::DecimalTypeMeta; diff --git a/crates/rayexec_execution/src/arrays/compute/date.rs b/crates/rayexec_execution/src/arrays/compute/date.rs index 255fec887..a9c4213a1 100644 --- a/crates/rayexec_execution/src/arrays/compute/date.rs +++ b/crates/rayexec_execution/src/arrays/compute/date.rs @@ -1,5 +1,5 @@ use chrono::{DateTime, Datelike, NaiveDate, Timelike, Utc}; -use iterutil::IntoExactSizeIterator; +use stdutil::iter::IntoExactSizeIterator; use rayexec_error::{not_implemented, RayexecError, Result}; use crate::arrays::array::exp::Array; diff --git a/crates/rayexec_execution/src/arrays/executor_exp/aggregate/binary.rs b/crates/rayexec_execution/src/arrays/executor_exp/aggregate/binary.rs index 71d1c6b0e..139cb5652 100644 --- a/crates/rayexec_execution/src/arrays/executor_exp/aggregate/binary.rs +++ b/crates/rayexec_execution/src/arrays/executor_exp/aggregate/binary.rs @@ -1,5 +1,5 @@ -use iterutil::IntoExactSizeIterator; use rayexec_error::Result; +use stdutil::iter::IntoExactSizeIterator; use super::AggregateState; use crate::arrays::array::exp::Array; @@ -62,7 +62,7 @@ impl BinaryNonNullUpdater { #[cfg(test)] mod tests { - use iterutil::TryFromExactSizeIterator; + use stdutil::iter::TryFromExactSizeIterator; use super::*; use crate::arrays::buffer::physical_type::{AddressableMut, PhysicalI32}; diff --git a/crates/rayexec_execution/src/arrays/executor_exp/aggregate/mod.rs b/crates/rayexec_execution/src/arrays/executor_exp/aggregate/mod.rs index f836c670d..443ad1874 100644 --- a/crates/rayexec_execution/src/arrays/executor_exp/aggregate/mod.rs +++ b/crates/rayexec_execution/src/arrays/executor_exp/aggregate/mod.rs @@ -40,6 +40,7 @@ impl StateCombiner { ) -> Result<()> where State: AggregateState, + Output: ?Sized, { for (from, to) in mapping { let consume = &mut consume[from]; diff --git a/crates/rayexec_execution/src/arrays/executor_exp/aggregate/unary.rs b/crates/rayexec_execution/src/arrays/executor_exp/aggregate/unary.rs index 2532e9d65..463b568af 100644 --- a/crates/rayexec_execution/src/arrays/executor_exp/aggregate/unary.rs +++ b/crates/rayexec_execution/src/arrays/executor_exp/aggregate/unary.rs @@ -1,5 +1,5 @@ -use iterutil::IntoExactSizeIterator; use rayexec_error::Result; +use stdutil::iter::IntoExactSizeIterator; use super::AggregateState; use crate::arrays::array::exp::Array; @@ -94,7 +94,7 @@ impl UnaryNonNullUpdater { #[cfg(test)] mod tests { - use iterutil::TryFromExactSizeIterator; + use stdutil::iter::TryFromExactSizeIterator; use super::*; use crate::arrays::buffer::buffer_manager::NopBufferManager; diff --git a/crates/rayexec_execution/src/arrays/executor_exp/scalar/binary.rs b/crates/rayexec_execution/src/arrays/executor_exp/scalar/binary.rs index 3764884f1..894a56487 100644 --- a/crates/rayexec_execution/src/arrays/executor_exp/scalar/binary.rs +++ b/crates/rayexec_execution/src/arrays/executor_exp/scalar/binary.rs @@ -1,4 +1,4 @@ -use iterutil::IntoExactSizeIterator; +use stdutil::iter::IntoExactSizeIterator; use rayexec_error::Result; use crate::arrays::array::exp::Array; @@ -144,7 +144,7 @@ impl BinaryExecutor { #[cfg(test)] mod tests { - use iterutil::TryFromExactSizeIterator; + use stdutil::iter::TryFromExactSizeIterator; use super::*; use crate::arrays::array::validity::Validity; diff --git a/crates/rayexec_execution/src/arrays/executor_exp/scalar/list_reduce.rs b/crates/rayexec_execution/src/arrays/executor_exp/scalar/list_reduce.rs index a1860e6e2..c552c0161 100644 --- a/crates/rayexec_execution/src/arrays/executor_exp/scalar/list_reduce.rs +++ b/crates/rayexec_execution/src/arrays/executor_exp/scalar/list_reduce.rs @@ -1,4 +1,4 @@ -use iterutil::IntoExactSizeIterator; +use stdutil::iter::IntoExactSizeIterator; use rayexec_error::{RayexecError, Result}; use crate::arrays::array::exp::Array; diff --git a/crates/rayexec_execution/src/arrays/executor_exp/scalar/ternary.rs b/crates/rayexec_execution/src/arrays/executor_exp/scalar/ternary.rs index 179be7a19..49599c903 100644 --- a/crates/rayexec_execution/src/arrays/executor_exp/scalar/ternary.rs +++ b/crates/rayexec_execution/src/arrays/executor_exp/scalar/ternary.rs @@ -1,4 +1,4 @@ -use iterutil::IntoExactSizeIterator; +use stdutil::iter::IntoExactSizeIterator; use rayexec_error::Result; use crate::arrays::array::exp::Array; @@ -189,7 +189,7 @@ impl TernaryExecutor { #[cfg(test)] mod tests { - use iterutil::TryFromExactSizeIterator; + use stdutil::iter::TryFromExactSizeIterator; use super::*; use crate::arrays::buffer::buffer_manager::NopBufferManager; diff --git a/crates/rayexec_execution/src/arrays/executor_exp/scalar/unary.rs b/crates/rayexec_execution/src/arrays/executor_exp/scalar/unary.rs index 67f6a39cc..3e2f62a92 100644 --- a/crates/rayexec_execution/src/arrays/executor_exp/scalar/unary.rs +++ b/crates/rayexec_execution/src/arrays/executor_exp/scalar/unary.rs @@ -1,5 +1,5 @@ -use iterutil::IntoExactSizeIterator; use rayexec_error::Result; +use stdutil::iter::IntoExactSizeIterator; use crate::arrays::array::exp::Array; use crate::arrays::array::flat::FlatArrayView; @@ -179,7 +179,7 @@ impl UnaryExecutor { #[cfg(test)] mod tests { - use iterutil::TryFromExactSizeIterator; + use stdutil::iter::TryFromExactSizeIterator; use super::*; use crate::arrays::array::validity::Validity; diff --git a/crates/rayexec_execution/src/arrays/executor_exp/scalar/uniform.rs b/crates/rayexec_execution/src/arrays/executor_exp/scalar/uniform.rs index 08092741a..d45f71741 100644 --- a/crates/rayexec_execution/src/arrays/executor_exp/scalar/uniform.rs +++ b/crates/rayexec_execution/src/arrays/executor_exp/scalar/uniform.rs @@ -1,4 +1,4 @@ -use iterutil::IntoExactSizeIterator; +use stdutil::iter::IntoExactSizeIterator; use rayexec_error::Result; use crate::arrays::array::exp::Array; @@ -149,7 +149,7 @@ impl UniformExecutor { #[cfg(test)] mod tests { - use iterutil::TryFromExactSizeIterator; + use stdutil::iter::TryFromExactSizeIterator; use super::*; use crate::arrays::buffer::buffer_manager::NopBufferManager; diff --git a/crates/rayexec_execution/src/arrays/testutil.rs b/crates/rayexec_execution/src/arrays/testutil.rs index 8492dc81f..988e760ec 100644 --- a/crates/rayexec_execution/src/arrays/testutil.rs +++ b/crates/rayexec_execution/src/arrays/testutil.rs @@ -8,7 +8,7 @@ use std::collections::BTreeMap; use std::fmt::Debug; -use iterutil::IntoExactSizeIterator; +use stdutil::iter::IntoExactSizeIterator; use super::array::exp::Array; use super::batch_exp::Batch; @@ -201,7 +201,7 @@ pub fn assert_batches_eq(batch1: &Batch, batch2: &Batch) { #[cfg(test)] mod tests { - use iterutil::TryFromExactSizeIterator; + use stdutil::iter::TryFromExactSizeIterator; use super::*; use crate::arrays::buffer::buffer_manager::NopBufferManager; diff --git a/crates/rayexec_execution/src/expr/physical/case_expr.rs b/crates/rayexec_execution/src/expr/physical/case_expr.rs index 45b74cafe..48a4c78b4 100644 --- a/crates/rayexec_execution/src/expr/physical/case_expr.rs +++ b/crates/rayexec_execution/src/expr/physical/case_expr.rs @@ -187,7 +187,7 @@ impl fmt::Display for PhysicalCaseExpr { #[cfg(test)] mod tests { - use iterutil::TryFromExactSizeIterator; + use stdutil::iter::TryFromExactSizeIterator; use super::*; use crate::arrays::datatype::DataType; diff --git a/crates/rayexec_execution/src/expr/physical/cast_expr.rs b/crates/rayexec_execution/src/expr/physical/cast_expr.rs index 2c4a56c41..729e3f7e8 100644 --- a/crates/rayexec_execution/src/expr/physical/cast_expr.rs +++ b/crates/rayexec_execution/src/expr/physical/cast_expr.rs @@ -101,7 +101,7 @@ impl DatabaseProtoConv for PhysicalCastExpr { #[cfg(test)] mod tests { - use iterutil::TryFromExactSizeIterator; + use stdutil::iter::TryFromExactSizeIterator; use super::*; use crate::arrays::buffer::buffer_manager::NopBufferManager; diff --git a/crates/rayexec_execution/src/expr/physical/column_expr.rs b/crates/rayexec_execution/src/expr/physical/column_expr.rs index 6280eabb0..40537bc5f 100644 --- a/crates/rayexec_execution/src/expr/physical/column_expr.rs +++ b/crates/rayexec_execution/src/expr/physical/column_expr.rs @@ -70,7 +70,7 @@ impl DatabaseProtoConv for PhysicalColumnExpr { #[cfg(test)] mod tests { - use iterutil::TryFromExactSizeIterator; + use stdutil::iter::TryFromExactSizeIterator; use super::*; use crate::arrays::datatype::DataType; diff --git a/crates/rayexec_execution/src/expr/physical/literal_expr.rs b/crates/rayexec_execution/src/expr/physical/literal_expr.rs index f220d8fbe..a35bced6e 100644 --- a/crates/rayexec_execution/src/expr/physical/literal_expr.rs +++ b/crates/rayexec_execution/src/expr/physical/literal_expr.rs @@ -68,7 +68,7 @@ impl DatabaseProtoConv for PhysicalLiteralExpr { #[cfg(test)] mod tests { - use iterutil::TryFromExactSizeIterator; + use stdutil::iter::TryFromExactSizeIterator; use super::*; use crate::arrays::datatype::DataType; diff --git a/crates/rayexec_execution/src/functions/aggregate/states.rs b/crates/rayexec_execution/src/functions/aggregate/states.rs index f1416fc07..808218e32 100644 --- a/crates/rayexec_execution/src/functions/aggregate/states.rs +++ b/crates/rayexec_execution/src/functions/aggregate/states.rs @@ -3,8 +3,9 @@ use std::any::Any; use std::fmt::Debug; use std::marker::PhantomData; -use iterutil::IntoExactSizeIterator; use rayexec_error::{RayexecError, Result}; +use stdutil::iter::IntoExactSizeIterator; +use stdutil::marker::PhantomCovariant; use super::ChunkGroupAddressIter; use crate::arrays::array::exp::Array; @@ -32,7 +33,14 @@ use crate::arrays::executor_exp::aggregate::{AggregateState, StateCombiner}; use crate::arrays::executor_exp::PutBuffer; use crate::arrays::storage::{AddressableStorage, PrimitiveStorage}; -pub struct TypedAggregateGroupStates { +pub struct TypedAggregateGroupStates< + State, + Input, + Output: ?Sized, + StateInit, + StateUpdate, + StateFinalize, +> { /// States being tracked. states: Vec, @@ -47,11 +55,11 @@ pub struct TypedAggregateGroupStates, - _output: PhantomData, + _input: PhantomCovariant, + _output: PhantomCovariant, } -impl +impl TypedAggregateGroupStates { pub fn new( @@ -65,8 +73,8 @@ impl state_init, state_update, state_finalize, - _input: PhantomData, - _output: PhantomData, + _input: PhantomCovariant::new(), + _output: PhantomCovariant::new(), } } } @@ -76,7 +84,7 @@ impl AggregateGroup where State: AggregateState + Sync + Send + 'static, Input: Sync + Send, - Output: Sync + Send, + Output: Sync + Send + ?Sized, StateInit: Fn() -> State + Sync + Send, StateUpdate: Fn(&[Array], Selection, &[usize], &mut [State]) -> Result<()> + Sync + Send, StateFinalize: Fn(&mut [State], &mut Array) -> Result<()> + Sync + Send, @@ -155,7 +163,7 @@ where Ok(()) } -impl fmt::Debug +impl fmt::Debug for TypedAggregateGroupStates { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { diff --git a/crates/rayexec_execution/src/functions/scalar/builtin/arith/add.rs b/crates/rayexec_execution/src/functions/scalar/builtin/arith/add.rs index 4d97b33e4..fa67ea729 100644 --- a/crates/rayexec_execution/src/functions/scalar/builtin/arith/add.rs +++ b/crates/rayexec_execution/src/functions/scalar/builtin/arith/add.rs @@ -204,7 +204,7 @@ where #[cfg(test)] mod tests { - use iterutil::TryFromExactSizeIterator; + use stdutil::iter::TryFromExactSizeIterator; use super::*; use crate::arrays::buffer::buffer_manager::NopBufferManager; diff --git a/crates/rayexec_execution/src/functions/scalar/builtin/arith/div.rs b/crates/rayexec_execution/src/functions/scalar/builtin/arith/div.rs index 596dd83fd..76a56409c 100644 --- a/crates/rayexec_execution/src/functions/scalar/builtin/arith/div.rs +++ b/crates/rayexec_execution/src/functions/scalar/builtin/arith/div.rs @@ -251,7 +251,7 @@ where #[cfg(test)] mod tests { - use iterutil::TryFromExactSizeIterator; + use stdutil::iter::TryFromExactSizeIterator; use super::*; use crate::arrays::buffer::buffer_manager::NopBufferManager; diff --git a/crates/rayexec_execution/src/functions/scalar/builtin/arith/mul.rs b/crates/rayexec_execution/src/functions/scalar/builtin/arith/mul.rs index a657354a4..4edbfbe1d 100644 --- a/crates/rayexec_execution/src/functions/scalar/builtin/arith/mul.rs +++ b/crates/rayexec_execution/src/functions/scalar/builtin/arith/mul.rs @@ -317,7 +317,7 @@ where #[cfg(test)] mod tests { - use iterutil::TryFromExactSizeIterator; + use stdutil::iter::TryFromExactSizeIterator; use super::*; use crate::arrays::buffer::buffer_manager::NopBufferManager; diff --git a/crates/rayexec_execution/src/functions/scalar/builtin/arith/rem.rs b/crates/rayexec_execution/src/functions/scalar/builtin/arith/rem.rs index 7f151e9b4..f7c590704 100644 --- a/crates/rayexec_execution/src/functions/scalar/builtin/arith/rem.rs +++ b/crates/rayexec_execution/src/functions/scalar/builtin/arith/rem.rs @@ -200,7 +200,7 @@ where #[cfg(test)] mod tests { - use iterutil::TryFromExactSizeIterator; + use stdutil::iter::TryFromExactSizeIterator; use super::*; use crate::arrays::buffer::buffer_manager::NopBufferManager; diff --git a/crates/rayexec_execution/src/functions/scalar/builtin/arith/sub.rs b/crates/rayexec_execution/src/functions/scalar/builtin/arith/sub.rs index 5157ac36c..fc00d326c 100644 --- a/crates/rayexec_execution/src/functions/scalar/builtin/arith/sub.rs +++ b/crates/rayexec_execution/src/functions/scalar/builtin/arith/sub.rs @@ -212,7 +212,7 @@ where #[cfg(test)] mod tests { - use iterutil::TryFromExactSizeIterator; + use stdutil::iter::TryFromExactSizeIterator; use super::*; use crate::arrays::buffer::buffer_manager::NopBufferManager; diff --git a/crates/rayexec_execution/src/functions/scalar/builtin/boolean.rs b/crates/rayexec_execution/src/functions/scalar/builtin/boolean.rs index 4ec43590c..c9d3cc7e8 100644 --- a/crates/rayexec_execution/src/functions/scalar/builtin/boolean.rs +++ b/crates/rayexec_execution/src/functions/scalar/builtin/boolean.rs @@ -225,7 +225,7 @@ impl ScalarFunctionImpl for OrImpl { #[cfg(test)] mod tests { - use iterutil::TryFromExactSizeIterator; + use stdutil::iter::TryFromExactSizeIterator; use super::*; use crate::arrays::buffer::buffer_manager::NopBufferManager; diff --git a/crates/rayexec_execution/src/functions/scalar/builtin/comparison.rs b/crates/rayexec_execution/src/functions/scalar/builtin/comparison.rs index 7b6018a0a..99be81f0c 100644 --- a/crates/rayexec_execution/src/functions/scalar/builtin/comparison.rs +++ b/crates/rayexec_execution/src/functions/scalar/builtin/comparison.rs @@ -854,7 +854,7 @@ where #[cfg(test)] mod tests { - use iterutil::TryFromExactSizeIterator; + use stdutil::iter::TryFromExactSizeIterator; use super::*; use crate::arrays::buffer::buffer_manager::NopBufferManager; diff --git a/crates/rayexec_execution/src/functions/scalar/builtin/datetime/epoch.rs b/crates/rayexec_execution/src/functions/scalar/builtin/datetime/epoch.rs index 42b444978..3ce6a16ee 100644 --- a/crates/rayexec_execution/src/functions/scalar/builtin/datetime/epoch.rs +++ b/crates/rayexec_execution/src/functions/scalar/builtin/datetime/epoch.rs @@ -1,4 +1,4 @@ -use iterutil::IntoExactSizeIterator; +use stdutil::iter::IntoExactSizeIterator; use rayexec_error::Result; use crate::arrays::array::exp::Array; diff --git a/crates/rayexec_execution/src/functions/scalar/builtin/is.rs b/crates/rayexec_execution/src/functions/scalar/builtin/is.rs index 9aab1b382..888bd0b2b 100644 --- a/crates/rayexec_execution/src/functions/scalar/builtin/is.rs +++ b/crates/rayexec_execution/src/functions/scalar/builtin/is.rs @@ -337,7 +337,7 @@ impl ScalarFunctionImpl for CheckBoolImpl( #[cfg(test)] mod tests { - use iterutil::TryFromExactSizeIterator; + use stdutil::iter::TryFromExactSizeIterator; use super::*; use crate::arrays::buffer::physical_type::PhysicalStorage; diff --git a/crates/rayexec_execution/src/functions/scalar/builtin/numeric/abs.rs b/crates/rayexec_execution/src/functions/scalar/builtin/numeric/abs.rs index d2ffb9b58..be949b68f 100644 --- a/crates/rayexec_execution/src/functions/scalar/builtin/numeric/abs.rs +++ b/crates/rayexec_execution/src/functions/scalar/builtin/numeric/abs.rs @@ -1,4 +1,4 @@ -use iterutil::IntoExactSizeIterator; +use stdutil::iter::IntoExactSizeIterator; use num_traits::Float; use rayexec_error::Result; diff --git a/crates/rayexec_execution/src/functions/scalar/builtin/numeric/acos.rs b/crates/rayexec_execution/src/functions/scalar/builtin/numeric/acos.rs index cd3f9f61e..46b26bdec 100644 --- a/crates/rayexec_execution/src/functions/scalar/builtin/numeric/acos.rs +++ b/crates/rayexec_execution/src/functions/scalar/builtin/numeric/acos.rs @@ -1,4 +1,4 @@ -use iterutil::IntoExactSizeIterator; +use stdutil::iter::IntoExactSizeIterator; use num_traits::Float; use rayexec_error::Result; diff --git a/crates/rayexec_execution/src/functions/scalar/builtin/numeric/asin.rs b/crates/rayexec_execution/src/functions/scalar/builtin/numeric/asin.rs index 48aec0004..6c1ddc6d5 100644 --- a/crates/rayexec_execution/src/functions/scalar/builtin/numeric/asin.rs +++ b/crates/rayexec_execution/src/functions/scalar/builtin/numeric/asin.rs @@ -1,4 +1,4 @@ -use iterutil::IntoExactSizeIterator; +use stdutil::iter::IntoExactSizeIterator; use num_traits::Float; use rayexec_error::Result; diff --git a/crates/rayexec_execution/src/functions/scalar/builtin/numeric/atan.rs b/crates/rayexec_execution/src/functions/scalar/builtin/numeric/atan.rs index 57b043d97..61a4ab7c1 100644 --- a/crates/rayexec_execution/src/functions/scalar/builtin/numeric/atan.rs +++ b/crates/rayexec_execution/src/functions/scalar/builtin/numeric/atan.rs @@ -1,4 +1,4 @@ -use iterutil::IntoExactSizeIterator; +use stdutil::iter::IntoExactSizeIterator; use num_traits::Float; use rayexec_error::Result; diff --git a/crates/rayexec_execution/src/functions/scalar/builtin/numeric/cbrt.rs b/crates/rayexec_execution/src/functions/scalar/builtin/numeric/cbrt.rs index 6869f7fc4..ee6979ac0 100644 --- a/crates/rayexec_execution/src/functions/scalar/builtin/numeric/cbrt.rs +++ b/crates/rayexec_execution/src/functions/scalar/builtin/numeric/cbrt.rs @@ -1,4 +1,4 @@ -use iterutil::IntoExactSizeIterator; +use stdutil::iter::IntoExactSizeIterator; use num_traits::Float; use rayexec_error::Result; diff --git a/crates/rayexec_execution/src/functions/scalar/builtin/numeric/ceil.rs b/crates/rayexec_execution/src/functions/scalar/builtin/numeric/ceil.rs index 5a2c5bd99..b439a0f02 100644 --- a/crates/rayexec_execution/src/functions/scalar/builtin/numeric/ceil.rs +++ b/crates/rayexec_execution/src/functions/scalar/builtin/numeric/ceil.rs @@ -1,4 +1,4 @@ -use iterutil::IntoExactSizeIterator; +use stdutil::iter::IntoExactSizeIterator; use num_traits::Float; use rayexec_error::Result; diff --git a/crates/rayexec_execution/src/functions/scalar/builtin/numeric/cos.rs b/crates/rayexec_execution/src/functions/scalar/builtin/numeric/cos.rs index 7be1dbf36..bc3c36af1 100644 --- a/crates/rayexec_execution/src/functions/scalar/builtin/numeric/cos.rs +++ b/crates/rayexec_execution/src/functions/scalar/builtin/numeric/cos.rs @@ -1,4 +1,4 @@ -use iterutil::IntoExactSizeIterator; +use stdutil::iter::IntoExactSizeIterator; use num_traits::Float; use rayexec_error::Result; diff --git a/crates/rayexec_execution/src/functions/scalar/builtin/numeric/degrees.rs b/crates/rayexec_execution/src/functions/scalar/builtin/numeric/degrees.rs index 1024e2db1..b79f51c4a 100644 --- a/crates/rayexec_execution/src/functions/scalar/builtin/numeric/degrees.rs +++ b/crates/rayexec_execution/src/functions/scalar/builtin/numeric/degrees.rs @@ -1,4 +1,4 @@ -use iterutil::IntoExactSizeIterator; +use stdutil::iter::IntoExactSizeIterator; use num_traits::Float; use rayexec_error::Result; diff --git a/crates/rayexec_execution/src/functions/scalar/builtin/numeric/exp.rs b/crates/rayexec_execution/src/functions/scalar/builtin/numeric/exp.rs index 7d3ff3fb5..649b8c3bf 100644 --- a/crates/rayexec_execution/src/functions/scalar/builtin/numeric/exp.rs +++ b/crates/rayexec_execution/src/functions/scalar/builtin/numeric/exp.rs @@ -1,4 +1,4 @@ -use iterutil::IntoExactSizeIterator; +use stdutil::iter::IntoExactSizeIterator; use num_traits::Float; use rayexec_error::Result; diff --git a/crates/rayexec_execution/src/functions/scalar/builtin/numeric/floor.rs b/crates/rayexec_execution/src/functions/scalar/builtin/numeric/floor.rs index b1b7d9611..c47e8ba09 100644 --- a/crates/rayexec_execution/src/functions/scalar/builtin/numeric/floor.rs +++ b/crates/rayexec_execution/src/functions/scalar/builtin/numeric/floor.rs @@ -1,4 +1,4 @@ -use iterutil::IntoExactSizeIterator; +use stdutil::iter::IntoExactSizeIterator; use num_traits::Float; use rayexec_error::Result; diff --git a/crates/rayexec_execution/src/functions/scalar/builtin/numeric/ln.rs b/crates/rayexec_execution/src/functions/scalar/builtin/numeric/ln.rs index 38ab5ba16..5650abb5e 100644 --- a/crates/rayexec_execution/src/functions/scalar/builtin/numeric/ln.rs +++ b/crates/rayexec_execution/src/functions/scalar/builtin/numeric/ln.rs @@ -1,4 +1,4 @@ -use iterutil::IntoExactSizeIterator; +use stdutil::iter::IntoExactSizeIterator; use num_traits::Float; use rayexec_error::Result; diff --git a/crates/rayexec_execution/src/functions/scalar/builtin/numeric/log.rs b/crates/rayexec_execution/src/functions/scalar/builtin/numeric/log.rs index 9c4cbdeb0..cb9c9ccec 100644 --- a/crates/rayexec_execution/src/functions/scalar/builtin/numeric/log.rs +++ b/crates/rayexec_execution/src/functions/scalar/builtin/numeric/log.rs @@ -1,4 +1,4 @@ -use iterutil::IntoExactSizeIterator; +use stdutil::iter::IntoExactSizeIterator; use num_traits::Float; use rayexec_error::Result; diff --git a/crates/rayexec_execution/src/functions/scalar/builtin/numeric/mod.rs b/crates/rayexec_execution/src/functions/scalar/builtin/numeric/mod.rs index 95310d2ce..a28318491 100644 --- a/crates/rayexec_execution/src/functions/scalar/builtin/numeric/mod.rs +++ b/crates/rayexec_execution/src/functions/scalar/builtin/numeric/mod.rs @@ -29,7 +29,7 @@ pub use degrees::*; pub use exp::*; pub use floor::*; pub use isnan::*; -use iterutil::IntoExactSizeIterator; +use stdutil::iter::IntoExactSizeIterator; pub use ln::*; pub use log::*; use num_traits::Float; diff --git a/crates/rayexec_execution/src/functions/scalar/builtin/numeric/radians.rs b/crates/rayexec_execution/src/functions/scalar/builtin/numeric/radians.rs index 41305b084..86e94812c 100644 --- a/crates/rayexec_execution/src/functions/scalar/builtin/numeric/radians.rs +++ b/crates/rayexec_execution/src/functions/scalar/builtin/numeric/radians.rs @@ -1,4 +1,4 @@ -use iterutil::IntoExactSizeIterator; +use stdutil::iter::IntoExactSizeIterator; use num_traits::Float; use rayexec_error::Result; diff --git a/crates/rayexec_execution/src/functions/scalar/builtin/numeric/sin.rs b/crates/rayexec_execution/src/functions/scalar/builtin/numeric/sin.rs index 1c6aefbe3..592a1a090 100644 --- a/crates/rayexec_execution/src/functions/scalar/builtin/numeric/sin.rs +++ b/crates/rayexec_execution/src/functions/scalar/builtin/numeric/sin.rs @@ -1,4 +1,4 @@ -use iterutil::IntoExactSizeIterator; +use stdutil::iter::IntoExactSizeIterator; use num_traits::Float; use rayexec_error::Result; diff --git a/crates/rayexec_execution/src/functions/scalar/builtin/numeric/sqrt.rs b/crates/rayexec_execution/src/functions/scalar/builtin/numeric/sqrt.rs index b2b33cc7c..c0c3f58e2 100644 --- a/crates/rayexec_execution/src/functions/scalar/builtin/numeric/sqrt.rs +++ b/crates/rayexec_execution/src/functions/scalar/builtin/numeric/sqrt.rs @@ -1,4 +1,4 @@ -use iterutil::IntoExactSizeIterator; +use stdutil::iter::IntoExactSizeIterator; use num_traits::Float; use rayexec_error::Result; diff --git a/crates/rayexec_execution/src/functions/scalar/builtin/numeric/tan.rs b/crates/rayexec_execution/src/functions/scalar/builtin/numeric/tan.rs index 0d92567d2..3392fe201 100644 --- a/crates/rayexec_execution/src/functions/scalar/builtin/numeric/tan.rs +++ b/crates/rayexec_execution/src/functions/scalar/builtin/numeric/tan.rs @@ -1,4 +1,4 @@ -use iterutil::IntoExactSizeIterator; +use stdutil::iter::IntoExactSizeIterator; use num_traits::Float; use rayexec_error::Result; diff --git a/crates/rayexec_execution/src/functions/scalar/builtin/similarity/l2_distance.rs b/crates/rayexec_execution/src/functions/scalar/builtin/similarity/l2_distance.rs index 14f62a52a..857a093f7 100644 --- a/crates/rayexec_execution/src/functions/scalar/builtin/similarity/l2_distance.rs +++ b/crates/rayexec_execution/src/functions/scalar/builtin/similarity/l2_distance.rs @@ -149,7 +149,7 @@ where #[cfg(test)] mod tests { - use iterutil::TryFromExactSizeIterator; + use stdutil::iter::TryFromExactSizeIterator; use super::*; use crate::arrays::buffer::buffer_manager::NopBufferManager; diff --git a/crates/rayexec_execution/src/functions/scalar/builtin/string/case.rs b/crates/rayexec_execution/src/functions/scalar/builtin/string/case.rs index 016a7ad79..47f4f47fd 100644 --- a/crates/rayexec_execution/src/functions/scalar/builtin/string/case.rs +++ b/crates/rayexec_execution/src/functions/scalar/builtin/string/case.rs @@ -1,4 +1,4 @@ -use iterutil::IntoExactSizeIterator; +use stdutil::iter::IntoExactSizeIterator; use rayexec_error::Result; use crate::arrays::array::exp::Array; diff --git a/crates/iterutil/Cargo.toml b/crates/stdutil/Cargo.toml similarity index 80% rename from crates/iterutil/Cargo.toml rename to crates/stdutil/Cargo.toml index 39c919663..7cb3e1417 100644 --- a/crates/iterutil/Cargo.toml +++ b/crates/stdutil/Cargo.toml @@ -1,5 +1,5 @@ [package] -name = "iterutil" +name = "stdutil" version.workspace = true edition.workspace = true diff --git a/crates/iterutil/src/lib.rs b/crates/stdutil/src/iter.rs similarity index 100% rename from crates/iterutil/src/lib.rs rename to crates/stdutil/src/iter.rs diff --git a/crates/stdutil/src/lib.rs b/crates/stdutil/src/lib.rs new file mode 100644 index 000000000..854431330 --- /dev/null +++ b/crates/stdutil/src/lib.rs @@ -0,0 +1,4 @@ +//! Utilities that are closely related to items found in std. + +pub mod iter; +pub mod marker; diff --git a/crates/stdutil/src/marker.rs b/crates/stdutil/src/marker.rs new file mode 100644 index 000000000..27a8868b4 --- /dev/null +++ b/crates/stdutil/src/marker.rs @@ -0,0 +1,22 @@ +use std::marker::PhantomData; + +/// Marker type that indicates covariance of `T` but does not inherit the bounds +/// of `T`. +/// +/// Has all the same properties of `PhantomData` minus the inherited trait +/// bounds. This lets us make structs and other types covariant to `T` but +/// without the potential inheritence of `?Sized` (or other undesired traits) in +/// the outer type. +#[derive(Debug, Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash)] +pub struct PhantomCovariant(PhantomData T>) +where + T: ?Sized; + +impl PhantomCovariant +where + T: ?Sized, +{ + pub const fn new() -> Self { + PhantomCovariant(PhantomData) + } +}