#empty #vector #set #map

empty-collections

Correct-by-construction empty collections

1 unstable release

0.1.0 Aug 29, 2024

#1884 in Data structures

MPL-2.0 license

14KB
336 lines

empty-collections

Empty collections - guaranteed to have nothing!

You may be familiar with the concept of nonempty-collections. The empty-collections crate provides the sister-concept; collections which contain nothing, and never will.

Why, you ask? That is a good question.

Examples

use empty_collections::*;

let v: EVec<usize> = EVec::new();
assert!(v.is_empty());

See the documentation for EVec, EMap, and ESet for more examples of their extensive APIs.

Iteration

The iterators in this crate are the fastest in the entire Rust ecosystem, able to traverse their entire stream in constant time. Simply amazing.

use empty_collections::*;

let v: EVec<i32> = EVec::new();
assert_eq!(0, v.into_iter().sum());

Features

  • serde: Guarantee that collections you send/receive over the wire are empty.

lib.rs:

Empty collections - guaranteed to have nothing!

You may be familiar with the concept of nonempty-collections. The empty-collections crate provides the sister-concept; collections which contain nothing, and never will.

Why, you ask? That is a good question.

Examples

use empty_collections::*;

let v: EVec<usize> = EVec::new();
assert!(v.is_empty());

See the documentation for EVec, EMap, and ESet for more examples of their extensive APIs.

Iteration

The iterators in this crate are the fastest in the entire Rust ecosystem, able to traverse their entire stream in constant time. Simply amazing.

use empty_collections::*;

let v: EVec<i32> = EVec::new();
assert_eq!(0, v.into_iter().sum());

Features

  • serde: Guarantee that collections you send/receive over the wire are empty.

Dependencies

~165KB