Skip to content

Commit

Permalink
update the readme (well, essentially delete most of it)
Browse files Browse the repository at this point in the history
  • Loading branch information
meadowsys committed Sep 8, 2024
1 parent 9887fb0 commit 69a5f7b
Showing 1 changed file with 3 additions and 68 deletions.
71 changes: 3 additions & 68 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,74 +1,9 @@
# wiwi

A (not so) lil lib containing misc utilities, and Stuff™. Contains some useful things, contains some silly things. Contains many things!
A (not so) lil lib containing many things and Stuff™ (some useful, some silly), intending to serve as an "extended standard library" of sorts. Maybe even can serve as a replacement for `std` eventually, for some applications (we'll see!).

Everything wiwi can do is gated behind feature flags, none of which are enabled by default.

## Features

After these descriptions of the different types of features, there will be a subsection dedicated to listing each feature.

Stable features are what you might expect, they are considered done and follow semver. Of course this does not mean there can't be functionality added, or that it can't break (if it does, there will be breaking semver bump, adhering to semver).

Unstable features are features that can be any degree of finished, can break whenever, or disappear whenever. They **_do not_** adhere to semver. Before becoming stable, unstable features have `-unstable` appended to their name, which will be removed when the feature stabilises. If you are using unstable features, you may find it wise to pin the version to an exact version (ie. semver `=` operator, ex. `wiwi = "=1.0.0"` in `Cargo.toml`).

Addon features enable additional things in some features, including integrations between `wiwi` and 3rd-party crates. They will enable things in features where applicable, and will silently do nothing if there's nothing to affect.

There exist features `all` to enable all stable features, `all-unstable` to enable all unstable (in addition to stable) features, and `all-addons` to enable all addon features (but you very likely do not want this! Unless you're truly using all the integrations, this can and will bloat your dependency tree).

<!-- ----- start autogenerated region (see gen-features script) ----- -->

### Stable features

- **`augment-panic-hook`** - Conveniently augment the panic hook (instead of replacing it), running some of your code before calling the existing one
- **`clock-timer`** - An interval tracking clock, yielding ticks at specified intervals and doing so for a specified period of time
- **`debounce`** - Delay calling a function until a specified period of time has passed since the last time it was called
- **`export-all-submodules`** - A convenience macro for declaring many private modules, then reexporting everything within them using a glob use statement
- **`h`** - h
- **`hex`** - Fast hex encoder and decoder for both upper hex and lower hex
- **`lazy-wrap`** - Wrappers around a lazily initialised value, and its initialisation function, supporting usage in static variables
- **`nominal`** - Generic newtype wrappers, for increased type safety through Rust's nominal type system
- **`rand`** - Random number generators and utilities
- **`with-cloned`** - Convenience macro for the clone-and-move pattern (yes, we're calling it that :p)
- **`z85`** - Fast encoder and decoder for [ZeroMQ](https://zeromq.org)'s [Z85](https://rfc.zeromq.org/spec/32) format

### Addon features

- **`hashbrown`** - Adds integration with `hashbrown` crate (where applicable)
- **`image`** - Adds integration with `image` crate (where applicable)
- **`large-tuples`** - By default, implementations on tuples are available for tuples with up to 8 elements, which should be enough for most uses. Enabling this feature will enable implementations for tuples with up to 32 elements
- **`nightly`** - Enable features only available in nightly Rust
- **`omega-tuples-of-doom`** - _Surely_, no one uses tuples with more than 32 elements in them... but we don't know everyone's use case, so this feature will enable implementations for tuples with up to 128 elements. _Hopefully_, that is enough for everything. :p
- **`serde`** - Adds integration with `serde` crate (where applicable)
- **`serde-json`** - Adds integration with `serde-json` crate (where applicable)

### Unstable features

reminder: **Unstable features are NOT covered by semver!**

- **`aoc`** - Utilities specific for writing solutions for [Advent of Code](https://adventofcode.com)
- **`auth`** - Lower-level(ish) utilities for writing an authentication system, in which the client password is never sent over the wire
- **`bitstream`** - Encoder and decoder for a stream of bits
- **`chainer`** - Wrappers around common structs that provide chaining APIs (take ownership, do operation, then return ownership back with the new value)
- **`cli`** - CLI arguments parser
- **`defer`** - Defer running code until the end of the current scope or until something gets dropped
- **`id`** - ID generators that guarantee uniqueness and ordering, and of various output sizes
- **`int`** - Bigints (ex. u384) and uneven sized ints (ex. u15)
- **`iter`** - Iterator utilities
- **`lsl`** - Experimental lib to help with writing Second Life scripts in Rust... because yes, I got fed up with it very quickly and immediately missed Rust lol
- **`mcu`** - [Material colour utilities](https://github.com/material-foundation/material-color-utilities)
- **`memory-usage`** - Calculate actual memory usage of values, including derive macro (not the same as `size_of::<T>()`)
- **`minesweeper`** - Core logic components for minesweeper games of arbitrary size
- **`num-traits`** - More traits for numbers and their various functionality, including things like [`MulWidening`]
- **`path`** - UTF-8 only path manipulation utilities written from scratch
- **`serialiser-binary`** - Self describing and stable binary format/serialiser, aiming for small output size
- **`serialiser-binary-2`** - Self describing and stable binary format/serialiser, aiming for small output size (v2)
- **`serialiser-text`** - Self describing and stable text format/serialiser, aiming to be easy to read and write by hand
- **`string-pool`** - Global immutable string pool and String type (à la Java)
- **`sudoku`** - Sudoku related... stuff
- **`unicode`** - Implementation of the [Unicode](https://home.unicode.org) standard, including UTF-8, UTF-16, and UTF-32 strings

<!-- ----- end autogenerated region ----- -->
<!-- ### Stable vs unstable features -->
<!-- TODO: figure out unstable features and stuffs -->

## Platform support

Expand Down

0 comments on commit 69a5f7b

Please sign in to comment.