Update clippy settings and fix a few clippy warnings.
This commit is contained in:
@@ -15,9 +15,9 @@
|
||||
//!
|
||||
//! - [`PrimaryMap`](struct.PrimaryMap.html) is used to keep track of a vector of entities,
|
||||
//! assigning a unique entity reference to each.
|
||||
//! - [`SecondaryMap`](struct.SecondaryMap.html) is used to associate secondary information to an entity.
|
||||
//! The map is implemented as a simple vector, so it does not keep track of which entities have
|
||||
//! been inserted. Instead, any unknown entities map to the default value.
|
||||
//! - [`SecondaryMap`](struct.SecondaryMap.html) is used to associate secondary information to an
|
||||
//! entity. The map is implemented as a simple vector, so it does not keep track of which
|
||||
//! entities have been inserted. Instead, any unknown entities map to the default value.
|
||||
//! - [`SparseMap`](struct.SparseMap.html) is used to associate secondary information to a small
|
||||
//! number of entities. It tracks accurately which entities have been inserted. This is a
|
||||
//! specialized data structure which can use a lot of memory, so read the documentation before
|
||||
@@ -35,7 +35,7 @@
|
||||
#![cfg_attr(feature = "clippy", plugin(clippy(conf_file = "../../clippy.toml")))]
|
||||
#![cfg_attr(
|
||||
feature = "cargo-clippy",
|
||||
allow(new_without_default, new_without_default_derive)
|
||||
allow(clippy::new_without_default, clippy::new_without_default_derive)
|
||||
)]
|
||||
#![cfg_attr(
|
||||
feature = "cargo-clippy",
|
||||
|
||||
@@ -11,8 +11,8 @@ use std::vec::Vec;
|
||||
/// A mapping `K -> V` for densely indexed entity references.
|
||||
///
|
||||
/// The `SecondaryMap` data structure uses the dense index space to implement a map with a vector.
|
||||
/// Unlike `PrimaryMap`, an `SecondaryMap` can't be used to allocate entity references. It is used to
|
||||
/// associate secondary information with entities.
|
||||
/// Unlike `PrimaryMap`, an `SecondaryMap` can't be used to allocate entity references. It is used
|
||||
/// to associate secondary information with entities.
|
||||
///
|
||||
/// The map does not track if an entry for a key has been inserted or not. Instead it behaves as if
|
||||
/// all keys have a default entry from the beginning.
|
||||
|
||||
@@ -37,19 +37,20 @@ pub trait SparseMapValue<K> {
|
||||
///
|
||||
/// # Compared to `SecondaryMap`
|
||||
///
|
||||
/// When should we use a `SparseMap` instead of a secondary `SecondaryMap`? First of all, `SparseMap`
|
||||
/// does not provide the functionality of a `PrimaryMap` which can allocate and assign entity
|
||||
/// references to objects as they are pushed onto the map. It is only the secondary entity maps
|
||||
/// that can be replaced with a `SparseMap`.
|
||||
/// When should we use a `SparseMap` instead of a secondary `SecondaryMap`? First of all,
|
||||
/// `SparseMap` does not provide the functionality of a `PrimaryMap` which can allocate and assign
|
||||
/// entity references to objects as they are pushed onto the map. It is only the secondary entity
|
||||
/// maps that can be replaced with a `SparseMap`.
|
||||
///
|
||||
/// - A secondary entity map assigns a default mapping to all keys. It doesn't distinguish between
|
||||
/// an unmapped key and one that maps to the default value. `SparseMap` does not require
|
||||
/// `Default` values, and it tracks accurately if a key has been mapped or not.
|
||||
/// - Iterating over the contents of an `SecondaryMap` is linear in the size of the *key space*, while
|
||||
/// iterating over a `SparseMap` is linear in the number of elements in the mapping. This is an
|
||||
/// advantage precisely when the mapping is sparse.
|
||||
/// - `SparseMap::clear()` is constant time and super-fast. `SecondaryMap::clear()` is linear in the
|
||||
/// size of the key space. (Or, rather the required `resize()` call following the `clear()` is).
|
||||
/// - Iterating over the contents of an `SecondaryMap` is linear in the size of the *key space*,
|
||||
/// while iterating over a `SparseMap` is linear in the number of elements in the mapping. This
|
||||
/// is an advantage precisely when the mapping is sparse.
|
||||
/// - `SparseMap::clear()` is constant time and super-fast. `SecondaryMap::clear()` is linear in
|
||||
/// the size of the key space. (Or, rather the required `resize()` call following the `clear()`
|
||||
/// is).
|
||||
/// - `SparseMap` requires the values to implement `SparseMapValue<K>` which means that they must
|
||||
/// contain their own key.
|
||||
pub struct SparseMap<K, V>
|
||||
|
||||
Reference in New Issue
Block a user