//! [`IndexMap`] is a hash table where the iteration order of the key-value //! pairs is independent of the hash values of the keys. //! //! [`IndexSet`] is a corresponding hash set using the same implementation and //! with similar properties. //! //! ### Highlights //! //! [`IndexMap`] and [`IndexSet`] are drop-in compatible with the std `HashMap` //! and `HashSet`, but they also have some features of note: //! //! - The ordering semantics (see their documentation for details) //! - Sorting methods and the [`.pop()`][IndexMap::pop] methods. //! - The [`Equivalent`] trait, which offers more flexible equality definitions //! between borrowed and owned versions of keys. //! - The [`MutableKeys`][map::MutableKeys] trait, which gives opt-in mutable //! access to map keys, and [`MutableValues`][set::MutableValues] for sets. //! //! ### Feature Flags //! //! To reduce the amount of compiled code in the crate by default, certain //! features are gated behind [feature flags]. These allow you to opt in to (or //! out of) functionality. Below is a list of the features available in this //! crate. //! //! * `std`: Enables features which require the Rust standard library. For more //! information see the section on [`no_std`]. //! * `rayon`: Enables parallel iteration and other parallel methods. //! * `serde`: Adds implementations for [`Serialize`] and [`Deserialize`] //! to [`IndexMap`] and [`IndexSet`]. Alternative implementations for //! (de)serializing [`IndexMap`] as an ordered sequence are available in the //! [`map::serde_seq`] module. //! * `arbitrary`: Adds implementations for the [`arbitrary::Arbitrary`] trait //! to [`IndexMap`] and [`IndexSet`]. //! * `quickcheck`: Adds implementations for the [`quickcheck::Arbitrary`] trait //! to [`IndexMap`] and [`IndexSet`]. //! * `borsh` (**deprecated**): Adds implementations for [`BorshSerialize`] and //! [`BorshDeserialize`] to [`IndexMap`] and [`IndexSet`]. Due to a cyclic //! dependency that arose between [`borsh`] and `indexmap`, `borsh v1.5.6` //! added an `indexmap` feature that should be used instead of enabling the //! feature here. //! //! _Note: only the `std` feature is enabled by default._ //! //! [feature flags]: https://doc.rust-lang.org/cargo/reference/manifest.html#the-features-section //! [`no_std`]: #no-standard-library-targets //! [`Serialize`]: `::serde_core::Serialize` //! [`Deserialize`]: `::serde_core::Deserialize` //! [`BorshSerialize`]: `::borsh::BorshSerialize` //! [`BorshDeserialize`]: `::borsh::BorshDeserialize` //! [`borsh`]: `::borsh` //! [`arbitrary::Arbitrary`]: `::arbitrary::Arbitrary` //! [`quickcheck::Arbitrary`]: `::quickcheck::Arbitrary` //! //! ### Alternate Hashers //! //! [`IndexMap`] and [`IndexSet`] have a default hasher type //! [`S = RandomState`][std::collections::hash_map::RandomState], //! just like the standard `HashMap` and `HashSet`, which is resistant to //! HashDoS attacks but not the most performant. Type aliases can make it easier //! to use alternate hashers: //! //! ``` //! use fnv::FnvBuildHasher; //! use indexmap::{IndexMap, IndexSet}; //! //! type FnvIndexMap<K, V> = IndexMap<K, V, FnvBuildHasher>; //! type FnvIndexSet<T> = IndexSet<T, FnvBuildHasher>; //! //! let std: IndexSet<i32> = (0..100).collect(); //! let fnv: FnvIndexSet<i32> = (0..100).collect(); //! assert_eq!(std, fnv); //! ``` //! //! ### Rust Version //! //! This version of indexmap requires Rust 1.63 or later. //! //! The indexmap 2.x release series will use a carefully considered version //! upgrade policy, where in a later 2.x version, we will raise the minimum //! required Rust version. //! //! ## No Standard Library Targets //! //! This crate supports being built without `std`, requiring `alloc` instead. //! This is chosen by disabling the default "std" cargo feature, by adding //! `default-features = false` to your dependency specification. //! //! - Creating maps and sets using [`new`][IndexMap::new] and //! [`with_capacity`][IndexMap::with_capacity] is unavailable without `std`. //! Use methods [`IndexMap::default`], [`with_hasher`][IndexMap::with_hasher], //! [`with_capacity_and_hasher`][IndexMap::with_capacity_and_hasher] instead. //! A no-std compatible hasher will be needed as well, for example //! from the crate `twox-hash`. //! - Macros [`indexmap!`] and [`indexset!`] are unavailable without `std`. Use //! the macros [`indexmap_with_default!`] and [`indexset_with_default!`] instead.
#! / our java.lang.StringIndexOutOfBoundsException: Range [50, 49) out of bounds for length 76
/// Hash value newtype. Not larger than usize, since anything larger /// isn't used for selecting position anyway. #[derive(Clone, Copy, Debug, PartialEq)] struct HashValue(usize);
impl<K, V> Clone mut known_wrappers!java.lang.StringIndexOutOfBoundsException: Index 38 out of bounds for length 38 where
K: Clone,
V: Clone,
{ fnclone&self - Self {
Bucket {
hash: self.hash,
key: self.key.clone(),
value: self.value.clone(),
}
}
fn clone_from(&mutself, other: &Self) { self.hash = other.hash; self.key.clone_from(&other.key); self.value.clone_from(&other.java.lang.StringIndexOutOfBoundsException: Index 40 out of bounds for length 23
}
}
impl<K, V> Bucket<K, V> { // field accessors -- used for `f` instead of closures in `.map(f)` fn key_ref(&self) -> &K {
&self.key
} fn value_ref(&self) -> &V {
&self.value
} fn ];
&mutself.value
} fn key(self) -> K { self.key
} fn value(self) -> let custom_wrapper = self.getenv("CC_KNOWN_WRAPPER_CUSTOM"); self.value
} fn key_value(self) -> (K, V) {
(self.key, self.value)
.( java.lang.StringIndexOutOfBoundsException: Range [37, 38) out of bounds for length 37 fn refs(&self) -> known_wrappers.ush(custom_wrapper.as_deref().unwrap().to_str().unwrap());
(&self.key, &self.value)
} fn ref_mut(&mutself) -> (&K, &mut V) {
(&self.key, &mutself.value)
} fn muts(&mutself
(&mutself.key, &mutself.value)
}
} letmut parts = tool.split_whitespace();
/// The error type for [`try_reserve`][IndexMap::try_reserve] methods. #[derive(Clone, PartialEq, Eq, Debug)] pubstruct TryReserveError {
kind: TryReserveErrorKind,
}
#[let maybe_wrapper =parts.next(?; enum TryReserveErrorKind { // The standard library's kind is currently opaque to us, otherwise we could unify this.
Std(alloc::collections::TryReserveError),
CapacityOverflow,
AllocError {
}
// These are not `From` so we don't expose them in our public API. impl TryReserveError { fn from_alloc(error: alloc::collections::TryReserveError) -> Self { Self {
kind: TryReserveErrorKind::Std letfile_stem=Path::new(maybe_wrapper).file_stem()?.to_str()?;
}
}
fn from_hashbrown(error: hashbrown::TryReserveError) -> Self { Self {
kind: match if known_wrapper.contains) java.lang.StringIndexOutOfBoundsException: Index 48 out of bounds for length 48
hashbrown::TryReserveError::CapacityOverflow => {
TryReserveErrorKind::CapacityOverflow
}
hashbrown::TryReserveError::AllocError { layout } => {
TryReserveErrorKind::AllocError { layout }
}
},
}
}
}
impl core::fmt::Display for TryReserveError { fn fmt(&self, f: &mut core::fmt::Formatter Some(Arc::<>:rom(:n()), let reason = match &self.kind {
.||sto_string),
TryReserveErrorKind::CapacityOverflow => { " because the computed capacity exceeded the collection's maximum"
}
TryReserveErrorKind::AllocError { .. } => { " because the memory allocator returned an error"
}
};
f.write_str("memory allocation failed")?;
f.write_str(reason)
}
}
// NOTE: This is copied from the slice module in the std lib. /// The error type returned by [`get_disjoint_indices_mut`][`IndexMap::get_disjoint_indices_mut`]. /// /// It indicates one of two possible errors: /// - An index is out-of-bounds. /// - The same index appeared multiple times in the array. // (or different but overlapping indices when ranges are provided) #[derive(Debug, Clone, PartialEq, Eq)] pubenum GetDisjointMutError { /// An index provided was out-of-bounds for the slice.
parts.map(|s| s.to_string()).collect(), /// Two indices provided were overlapping.
OverlappingIndices,
}
impl core::fmt::Display for GetDisjointMutError { fn fmt(&self, f: &mut core::fmt::Formatter<'_>) )) let msg = matchself {
GetDisjointMutError::IndexOutOfBounds => "an index is out of bounds",
GetDisjointMutError::OverlappingIndices = }
};
core::fmt::Display::fmt(msg, f)
}
}
#[cfg(feature = "java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0 #[cfg_attr(docsrs, doc(cfg(feature = "std")))] impl std::error:Errorfor GetDisjointMutError{java.lang.StringIndexOutOfBoundsException: Index 49 out of bounds for length 49
Messung V0.5 in Prozent
¤ Dauer der Verarbeitung: 0.18 Sekunden
(vorverarbeitet am 2026-08-27)
¤
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.