diff options
author | Fredrik Meringdal <fmeringdal@hotmail.com> | 2020-10-25 21:56:42 +0100 |
---|---|---|
committer | Fredrik Meringdal <fmeringdal@hotmail.com> | 2020-10-25 21:56:42 +0100 |
commit | 9609cbd72bedd4423f9ed1e34f7847855f903e48 (patch) | |
tree | f77c4d637024596125024501be93cb641e934ee8 | |
parent | a003b9b174d6df1421796a64943666129868ad16 (diff) | |
download | rust_rrule-9609cbd72bedd4423f9ed1e34f7847855f903e48.zip |
updated docs
-rw-r--r-- | Cargo.toml | 3 | ||||
-rw-r--r-- | src/lib.rs | 26 |
2 files changed, 2 insertions, 27 deletions
@@ -2,7 +2,8 @@ name = "rrule" description = "A pure Rust (partial) implementation of recurrence rules as defined in the iCalendar RFC." license = "MIT" -version = "0.2.4" +version = "0.2.5" +documentation = "https://docs.rs/rrule" repository = "https://github.com/fmeringdal/rust_rrule" authors = ["Fredrik Meringdal"] edition = "2018" @@ -1,31 +1,5 @@ //! A partial implementation of recurrence rules as defined in the iCalendar RFC. //! -//! This map implementation allows reads and writes to execute entirely in parallel, with no -//! implicit synchronization overhead. Reads never take locks on their critical path, and neither -//! do writes assuming there is a single writer (multi-writer is possible using a `Mutex`), which -//! significantly improves performance under contention. -//! -//! The trade-off exposed by this module is one of eventual consistency: writes are not visible to -//! readers except following explicit synchronization. Specifically, readers only see the -//! operations that preceeded the last call to `WriteHandle::refresh` by a writer. This lets -//! writers decide how stale they are willing to let reads get. They can refresh the map after -//! every write to emulate a regular concurrent `HashMap`, or they can refresh only occasionally to -//! reduce the synchronization overhead at the cost of stale reads. -//! -//! For read-heavy workloads, the scheme used by this module is particularly useful. Writers can -//! afford to refresh after every write, which provides up-to-date reads, and readers remain fast -//! as they do not need to ever take locks. -//! -//! The map is multi-value, meaning that every key maps to a *collection* of values. This -//! introduces some memory cost by adding a layer of indirection through a `Vec` for each value, -//! but enables more advanced use. This choice was made as it would not be possible to emulate such -//! functionality on top of the semantics of this map (think about it -- what would the operational -//! log contain?). -//! -//! To faciliate more advanced use-cases, each of the two maps also carry some customizeable -//! meta-information. The writers may update this at will, and when a refresh happens, the current -//! meta will also be made visible to readers. This could be useful, for example, to indicate what -//! time the refresh happened. //! //! # Examples //! |