From d05f78eaaf4094456700e82ca68e34fd022bb3fb Mon Sep 17 00:00:00 2001 From: Adetula Olamide <67712894+LamsyA@users.noreply.github.com> Date: Thu, 8 Aug 2024 05:12:35 +0100 Subject: [PATCH] Add Dict Cheatsheet (#235) * simple_vault test implementation * Added dict cheatsheet * Added dict cheatsheet * a little clean up * a little clean up --- Scarb.lock | 7 +++++++ .../cairo_cheatsheet/src/dict_example.cairo | 16 ++++++++++++++++ .../cairo_cheatsheet/src/lib.cairo | 1 + src/SUMMARY.md | 1 + src/getting-started/cairo_cheatsheet/dict.md | 12 ++++++++++++ 5 files changed, 37 insertions(+) create mode 100644 listings/getting-started/cairo_cheatsheet/src/dict_example.cairo create mode 100644 src/getting-started/cairo_cheatsheet/dict.md diff --git a/Scarb.lock b/Scarb.lock index 96d58087..c84915d1 100644 --- a/Scarb.lock +++ b/Scarb.lock @@ -131,9 +131,16 @@ dependencies = [ "openzeppelin", ] +[[package]] +name = "simple_storage" +version = "0.1.0" + [[package]] name = "simple_vault" version = "0.1.0" +dependencies = [ + "erc20", +] [[package]] name = "snforge_std" diff --git a/listings/getting-started/cairo_cheatsheet/src/dict_example.cairo b/listings/getting-started/cairo_cheatsheet/src/dict_example.cairo new file mode 100644 index 00000000..13a70676 --- /dev/null +++ b/listings/getting-started/cairo_cheatsheet/src/dict_example.cairo @@ -0,0 +1,16 @@ +// ANCHOR: sheet +fn dict() { + let mut Auctions: Felt252Dict = Default::default(); + + Auctions.insert('Bola', 30); + Auctions.insert('Maria', 40); + + let bola_balance = Auctions.get('Bola'); + assert!(bola_balance == 30, "Bola balance should be 30"); + + let maria_balance = Auctions.get('Maria'); + assert!(maria_balance == 40, "Maria balance should be 40"); +} +// ANCHOR_END: sheet + + diff --git a/listings/getting-started/cairo_cheatsheet/src/lib.cairo b/listings/getting-started/cairo_cheatsheet/src/lib.cairo index b495fd77..246ffb4c 100644 --- a/listings/getting-started/cairo_cheatsheet/src/lib.cairo +++ b/listings/getting-started/cairo_cheatsheet/src/lib.cairo @@ -9,3 +9,4 @@ mod struct_example; mod type_casting_example; mod while_let_example; mod if_let_example; +mod dict_example; diff --git a/src/SUMMARY.md b/src/SUMMARY.md index ae79c8d8..8079da68 100644 --- a/src/SUMMARY.md +++ b/src/SUMMARY.md @@ -41,6 +41,7 @@ Summary - [Tuples](./getting-started/cairo_cheatsheet/tuples.md) - [Struct](./getting-started/cairo_cheatsheet/struct.md) - [Type casting](./getting-started/cairo_cheatsheet/type_casting.md) + - [Dict](./getting-started/cairo_cheatsheet/dict.md) # Components diff --git a/src/getting-started/cairo_cheatsheet/dict.md b/src/getting-started/cairo_cheatsheet/dict.md new file mode 100644 index 00000000..eaa654ae --- /dev/null +++ b/src/getting-started/cairo_cheatsheet/dict.md @@ -0,0 +1,12 @@ +# Dictionary + +A dictionary is a data structure used to store key-value pairs, enabling efficient data retrieval. The keys and values in a Cairo dictionary can be of various types, including Felt252. Dictionaries provide fast access to data, as they allow for quick lookups, insertions, and deletions based on the keys.The core functionality of a `Felt252Dict` is implemented in the trait `Felt252DictTrait`, which includes all basic operations. Among them, we can find: + +- `insert(felt252, T) -> ()` to write values to a dictionary instance. +- `get(felt252) -> T` to read values from it. + +For example: + +```rust +{{#include ../../../listings/getting-started/cairo_cheatsheet/src/dict_example.cairo:sheet}} +```