Skip to content

A minimalistic library for Rust providing something that could be loosely described as "lazy bidirectional pointers".

License

Notifications You must be signed in to change notification settings

arbrk1/smart_access

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

44 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Smart accessors for Rust

crate docs

Overview

There are many sorts of “smart pointers”. They have following things in common:

  • a simple protocol for accessing the data (make some bookkeeping and then give something equivalent to a raw pointer to the data)
  • some nontrivial logic of ownership management

This crate provides “smart accessors”:

  • they aren't concerned with questions of ownership
  • they give a bidirectional view of the data: updating the accessed data can cause a nontrivial change of other data linked with the data being accessed
  • the accessed view can be entirely virtual: it can be constructed only for the duration of the access

For code examples see the docs.

Usage

Simply include

smart_access = "0.7"

in your Cargo.toml.

Variants

The library, although being very small, includes some pluggable components.

For a bare-bones version use

smart_access = { version = "0.7", default-features = false }

But usually you'll want something more convenient.

Accessors for Vec, HashMap and BTreeMap

smart_access = { version = "0.7", default-features = false, features = ["collections", "hashbrown"] }

A maximal no_std and no-alloc variant

smart_access = { version = "0.7", default-features = false, features = ["batch_ct", "detach", "traversal"] }

Versions

  • 0.7.0: Now fully independent of std.
  • 0.6.2: An accessor to the Vec-owned slice + some doc improvements.
  • 0.6.1: Fixed iterator accessors panicking on too large ranges.
  • 0.6.0: Accessors for iterators + get_clone method on the Cps trait.
  • 0.5.4: Accessors for stdlib sets + doc improvements.
  • 0.5.3: A new sort of map accessors (wrapping and_modify(..).or_insert(..)).
  • 0.5.2: Added a macro for forming pathlike types.
  • 0.5.1: Some errors in the documentation fixed. A concrete type of detached paths is now public.
  • 0.5.0: A change in the presentation of the AT struct. The detach feature reworked. Docs now have a version migration guide.
  • 0.4.1: Fixed some serious bugs in the detach-enabled version of the crate.
  • 0.4.0: Public API for using access batches as function inputs/outputs.
  • 0.3.0: Public API for using detached accessors as function inputs/outputs.
  • 0.2.2: New feature detach allows one to detach an accessor from the source of the data accessed.
  • 0.2.1: Now really works on no_std.
  • 0.2.0: Simplistic batch editing + breaking change for rt-batches + doc improvements.
  • 0.1.2: A bit more user-friendly docs.
  • 0.1.1: Only the README has been updated.
  • 0.1.0: The first iteration.

About

A minimalistic library for Rust providing something that could be loosely described as "lazy bidirectional pointers".

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published