summaryrefslogtreecommitdiff
path: root/vendor/itertools/src/free.rs
diff options
context:
space:
mode:
authormo khan <mo@mokhan.ca>2025-07-15 16:37:08 -0600
committermo khan <mo@mokhan.ca>2025-07-17 16:30:22 -0600
commit45df4d0d9b577fecee798d672695fe24ff57fb1b (patch)
tree1b99bf645035b58e0d6db08c7a83521f41f7a75b /vendor/itertools/src/free.rs
parentf94f79608393d4ab127db63cc41668445ef6b243 (diff)
feat: migrate from Cedar to SpiceDB authorization system
This is a major architectural change that replaces the Cedar policy-based authorization system with SpiceDB's relation-based authorization. Key changes: - Migrate from Rust to Go implementation - Replace Cedar policies with SpiceDB schema and relationships - Switch from envoy `ext_authz` with Cedar to SpiceDB permission checks - Update build system and dependencies for Go ecosystem - Maintain Envoy integration for external authorization This change enables more flexible permission modeling through SpiceDB's Google Zanzibar inspired relation-based system, supporting complex hierarchical permissions that were difficult to express in Cedar. Breaking change: Existing Cedar policies and Rust-based configuration will no longer work and need to be migrated to SpiceDB schema.
Diffstat (limited to 'vendor/itertools/src/free.rs')
-rw-r--r--vendor/itertools/src/free.rs319
1 files changed, 0 insertions, 319 deletions
diff --git a/vendor/itertools/src/free.rs b/vendor/itertools/src/free.rs
deleted file mode 100644
index 4c682054..00000000
--- a/vendor/itertools/src/free.rs
+++ /dev/null
@@ -1,319 +0,0 @@
-//! Free functions that create iterator adaptors or call iterator methods.
-//!
-//! The benefit of free functions is that they accept any [`IntoIterator`] as
-//! argument, so the resulting code may be easier to read.
-
-#[cfg(feature = "use_alloc")]
-use std::fmt::Display;
-use std::iter::{self, Zip};
-#[cfg(feature = "use_alloc")]
-type VecIntoIter<T> = alloc::vec::IntoIter<T>;
-
-#[cfg(feature = "use_alloc")]
-use alloc::string::String;
-
-use crate::intersperse::{Intersperse, IntersperseWith};
-use crate::Itertools;
-
-pub use crate::adaptors::{interleave, put_back};
-#[cfg(feature = "use_alloc")]
-pub use crate::kmerge_impl::kmerge;
-pub use crate::merge_join::{merge, merge_join_by};
-#[cfg(feature = "use_alloc")]
-pub use crate::multipeek_impl::multipeek;
-#[cfg(feature = "use_alloc")]
-pub use crate::peek_nth::peek_nth;
-#[cfg(feature = "use_alloc")]
-pub use crate::put_back_n_impl::put_back_n;
-#[cfg(feature = "use_alloc")]
-pub use crate::rciter_impl::rciter;
-pub use crate::zip_eq_impl::zip_eq;
-
-/// Iterate `iterable` with a particular value inserted between each element.
-///
-/// [`IntoIterator`] enabled version of [`Iterator::intersperse`].
-///
-/// ```
-/// use itertools::intersperse;
-///
-/// itertools::assert_equal(intersperse(0..3, 8), vec![0, 8, 1, 8, 2]);
-/// ```
-pub fn intersperse<I>(iterable: I, element: I::Item) -> Intersperse<I::IntoIter>
-where
- I: IntoIterator,
- <I as IntoIterator>::Item: Clone,
-{
- Itertools::intersperse(iterable.into_iter(), element)
-}
-
-/// Iterate `iterable` with a particular value created by a function inserted
-/// between each element.
-///
-/// [`IntoIterator`] enabled version of [`Iterator::intersperse_with`].
-///
-/// ```
-/// use itertools::intersperse_with;
-///
-/// let mut i = 10;
-/// itertools::assert_equal(intersperse_with(0..3, || { i -= 1; i }), vec![0, 9, 1, 8, 2]);
-/// assert_eq!(i, 8);
-/// ```
-pub fn intersperse_with<I, F>(iterable: I, element: F) -> IntersperseWith<I::IntoIter, F>
-where
- I: IntoIterator,
- F: FnMut() -> I::Item,
-{
- Itertools::intersperse_with(iterable.into_iter(), element)
-}
-
-/// Iterate `iterable` with a running index.
-///
-/// [`IntoIterator`] enabled version of [`Iterator::enumerate`].
-///
-/// ```
-/// use itertools::enumerate;
-///
-/// for (i, elt) in enumerate(&[1, 2, 3]) {
-/// /* loop body */
-/// # let _ = (i, elt);
-/// }
-/// ```
-pub fn enumerate<I>(iterable: I) -> iter::Enumerate<I::IntoIter>
-where
- I: IntoIterator,
-{
- iterable.into_iter().enumerate()
-}
-
-/// Iterate `iterable` in reverse.
-///
-/// [`IntoIterator`] enabled version of [`Iterator::rev`].
-///
-/// ```
-/// use itertools::rev;
-///
-/// for elt in rev(&[1, 2, 3]) {
-/// /* loop body */
-/// # let _ = elt;
-/// }
-/// ```
-pub fn rev<I>(iterable: I) -> iter::Rev<I::IntoIter>
-where
- I: IntoIterator,
- I::IntoIter: DoubleEndedIterator,
-{
- iterable.into_iter().rev()
-}
-
-/// Converts the arguments to iterators and zips them.
-///
-/// [`IntoIterator`] enabled version of [`Iterator::zip`].
-///
-/// ## Example
-///
-/// ```
-/// use itertools::zip;
-///
-/// let mut result: Vec<(i32, char)> = Vec::new();
-///
-/// for (a, b) in zip(&[1, 2, 3, 4, 5], &['a', 'b', 'c']) {
-/// result.push((*a, *b));
-/// }
-/// assert_eq!(result, vec![(1, 'a'),(2, 'b'),(3, 'c')]);
-/// ```
-#[deprecated(
- note = "Use [std::iter::zip](https://doc.rust-lang.org/std/iter/fn.zip.html) instead",
- since = "0.10.4"
-)]
-pub fn zip<I, J>(i: I, j: J) -> Zip<I::IntoIter, J::IntoIter>
-where
- I: IntoIterator,
- J: IntoIterator,
-{
- i.into_iter().zip(j)
-}
-
-/// Takes two iterables and creates a new iterator over both in sequence.
-///
-/// [`IntoIterator`] enabled version of [`Iterator::chain`].
-///
-/// ## Example
-/// ```
-/// use itertools::chain;
-///
-/// let mut result:Vec<i32> = Vec::new();
-///
-/// for element in chain(&[1, 2, 3], &[4]) {
-/// result.push(*element);
-/// }
-/// assert_eq!(result, vec![1, 2, 3, 4]);
-/// ```
-pub fn chain<I, J>(
- i: I,
- j: J,
-) -> iter::Chain<<I as IntoIterator>::IntoIter, <J as IntoIterator>::IntoIter>
-where
- I: IntoIterator,
- J: IntoIterator<Item = I::Item>,
-{
- i.into_iter().chain(j)
-}
-
-/// Create an iterator that clones each element from `&T` to `T`.
-///
-/// [`IntoIterator`] enabled version of [`Iterator::cloned`].
-///
-/// ```
-/// use itertools::cloned;
-///
-/// assert_eq!(cloned(b"abc").next(), Some(b'a'));
-/// ```
-pub fn cloned<'a, I, T>(iterable: I) -> iter::Cloned<I::IntoIter>
-where
- I: IntoIterator<Item = &'a T>,
- T: Clone + 'a,
-{
- iterable.into_iter().cloned()
-}
-
-/// Perform a fold operation over the iterable.
-///
-/// [`IntoIterator`] enabled version of [`Iterator::fold`].
-///
-/// ```
-/// use itertools::fold;
-///
-/// assert_eq!(fold(&[1., 2., 3.], 0., |a, &b| f32::max(a, b)), 3.);
-/// ```
-pub fn fold<I, B, F>(iterable: I, init: B, f: F) -> B
-where
- I: IntoIterator,
- F: FnMut(B, I::Item) -> B,
-{
- iterable.into_iter().fold(init, f)
-}
-
-/// Test whether the predicate holds for all elements in the iterable.
-///
-/// [`IntoIterator`] enabled version of [`Iterator::all`].
-///
-/// ```
-/// use itertools::all;
-///
-/// assert!(all(&[1, 2, 3], |elt| *elt > 0));
-/// ```
-pub fn all<I, F>(iterable: I, f: F) -> bool
-where
- I: IntoIterator,
- F: FnMut(I::Item) -> bool,
-{
- iterable.into_iter().all(f)
-}
-
-/// Test whether the predicate holds for any elements in the iterable.
-///
-/// [`IntoIterator`] enabled version of [`Iterator::any`].
-///
-/// ```
-/// use itertools::any;
-///
-/// assert!(any(&[0, -1, 2], |elt| *elt > 0));
-/// ```
-pub fn any<I, F>(iterable: I, f: F) -> bool
-where
- I: IntoIterator,
- F: FnMut(I::Item) -> bool,
-{
- iterable.into_iter().any(f)
-}
-
-/// Return the maximum value of the iterable.
-///
-/// [`IntoIterator`] enabled version of [`Iterator::max`].
-///
-/// ```
-/// use itertools::max;
-///
-/// assert_eq!(max(0..10), Some(9));
-/// ```
-pub fn max<I>(iterable: I) -> Option<I::Item>
-where
- I: IntoIterator,
- I::Item: Ord,
-{
- iterable.into_iter().max()
-}
-
-/// Return the minimum value of the iterable.
-///
-/// [`IntoIterator`] enabled version of [`Iterator::min`].
-///
-/// ```
-/// use itertools::min;
-///
-/// assert_eq!(min(0..10), Some(0));
-/// ```
-pub fn min<I>(iterable: I) -> Option<I::Item>
-where
- I: IntoIterator,
- I::Item: Ord,
-{
- iterable.into_iter().min()
-}
-
-/// Combine all iterator elements into one `String`, separated by `sep`.
-///
-/// [`IntoIterator`] enabled version of [`Itertools::join`].
-///
-/// ```
-/// use itertools::join;
-///
-/// assert_eq!(join(&[1, 2, 3], ", "), "1, 2, 3");
-/// ```
-#[cfg(feature = "use_alloc")]
-pub fn join<I>(iterable: I, sep: &str) -> String
-where
- I: IntoIterator,
- I::Item: Display,
-{
- iterable.into_iter().join(sep)
-}
-
-/// Sort all iterator elements into a new iterator in ascending order.
-///
-/// [`IntoIterator`] enabled version of [`Itertools::sorted`].
-///
-/// ```
-/// use itertools::sorted;
-/// use itertools::assert_equal;
-///
-/// assert_equal(sorted("rust".chars()), "rstu".chars());
-/// ```
-#[cfg(feature = "use_alloc")]
-pub fn sorted<I>(iterable: I) -> VecIntoIter<I::Item>
-where
- I: IntoIterator,
- I::Item: Ord,
-{
- iterable.into_iter().sorted()
-}
-
-/// Sort all iterator elements into a new iterator in ascending order.
-/// This sort is unstable (i.e., may reorder equal elements).
-///
-/// [`IntoIterator`] enabled version of [`Itertools::sorted_unstable`].
-///
-/// ```
-/// use itertools::sorted_unstable;
-/// use itertools::assert_equal;
-///
-/// assert_equal(sorted_unstable("rust".chars()), "rstu".chars());
-/// ```
-#[cfg(feature = "use_alloc")]
-pub fn sorted_unstable<I>(iterable: I) -> VecIntoIter<I::Item>
-where
- I: IntoIterator,
- I::Item: Ord,
-{
- iterable.into_iter().sorted_unstable()
-}