You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
* Add `Mapping` storage collection
* Implement `insert` and `get` for `Mapping`
* Implement `SpreadLayout` for `Mapping`
* Fix typo
* Add some basic tests
* Fix some documentation formatting
* Use `PackedLayout` as trait bound instead of `Encode/Decode`
* Avoid using low level `ink_env` functions when interacting with storage
* RustFmt
* Appease Clippy
* Only use single `PhantomData` field
* Change `get` API to take reference to `key`
* Implement `TypeInfo` and `StorageLayout` for `Mapping`
* Properly gate `TypeInfo` and `StorageLayout` impls behind `std`
* Replace `HashMap` with `Mapping` in ERC-20 example
* Return `Option` from `Mapping::get`
* Update ERC-20 to handle `Option` returns
* Change `get` and `key` to use `Borrow`-ed values
* Add `Debug` and `Default` implementations
* Proper spelling
* Change `insert` to only accept borrowed K,V pairs
* Update ERC-20 example accordingly
* Make more explicit what each `key` is referring to
* Try using a `RefCell` instead of passing `Key` around
* Try using `UnsafeCell` instead
* Revert "Try using a `RefCell` instead of passing `Key` around"
This reverts commit cede033.
Using `RefCell`/`UnsafeCell` doesn't reduce the contract size more than
what we have now, and it introduced `unsafe` code. We believe the
limiting factor here is the `Key` type definition anyways.
* Clean up some of the documentation
* adjust the Mapping type for the new SpreadAllocate trait
* adjust ERC-20 example for changes in Mapping type
* remove commented out code
* add doc comment to new_init
* make it possible to use references in more cases with Mapping
* use references in more cases for ERC-20 example contract
* remove unnecessary references in Mapping methods
* refactor/improve pull_packed_root_opt utility method slightly
* fix ERC-20 example contract
The problem with *self.total_supply is that it may implicitly read from storage in case it has not yet read a value from storage whereas Lazy::set just writes the value to the Lazy instance.
Co-authored-by: Hernando Castano <[email protected]>
Co-authored-by: Hernando Castano <[email protected]>
0 commit comments