This crate is used internally by Tinychain. It provides traits and data structures to support transactional mutations of in-memory and persistent datatypes.

Example: ```rust use tc_transact::{Mutable, TxnId, TxnLock};

let version = TxnLock::new("version", Mutable::from(0));

let txnone = TxnId::new(1); let txntwo = TxnId::new(2); let txn_three = TxnId::new(3);

asserteq!(version.read(txnone).await.unwrap(), 0);

*(version.write(txntwo).await.unwrap()) = 2; version.commit(txntwo).await;

asserteq!(version.read(txnthree).await.unwrap(), 2);

```

For more information on Tinychain, see http://github.com/haydnv/tinychain