@@ -39,6 +39,7 @@ allowing cleaner iterator APIs.
3939- [ Function ` add ` ] ( #0x1_ordered_map_add )
4040- [ Function ` upsert ` ] ( #0x1_ordered_map_upsert )
4141- [ Function ` remove ` ] ( #0x1_ordered_map_remove )
42+ - [ Function ` remove_or_none ` ] ( #0x1_ordered_map_remove_or_none )
4243- [ Function ` contains ` ] ( #0x1_ordered_map_contains )
4344- [ Function ` borrow ` ] ( #0x1_ordered_map_borrow )
4445- [ Function ` borrow_mut ` ] ( #0x1_ordered_map_borrow_mut )
@@ -77,7 +78,7 @@ allowing cleaner iterator APIs.
7778- [ Function ` destroy ` ] ( #0x1_ordered_map_destroy )
7879- [ Function ` for_each ` ] ( #0x1_ordered_map_for_each )
7980- [ Function ` for_each_ref ` ] ( #0x1_ordered_map_for_each_ref )
80- - [ Function ` for_each_ref_friend ` ] ( #0x1_ordered_map_for_each_ref_friend )
81+ - [ Function ` for_each_ref ` ] ( #0x1_ordered_map_for_each_ref_friend )
8182- [ Function ` for_each_mut ` ] ( #0x1_ordered_map_for_each_mut )
8283- [ Function ` new_iter ` ] ( #0x1_ordered_map_new_iter )
8384- [ Function ` binary_search ` ] ( #0x1_ordered_map_binary_search )
@@ -515,6 +516,39 @@ Aborts with EKEY_NOT_FOUND if <code>key</code> doesn't exist.
515516
516517
517518
519+ </details >
520+
521+ <a id =" 0x1_ordered_map_remove_or_none " ></a >
522+
523+ ## Function ` remove_or_none `
524+
525+ Remove a key/value pair from the map.
526+ Returns none if <code >key</code > doesn't exist.
527+
528+
529+ <pre ><code ><b >public</b > <b >fun</b > <a href =" ordered_map.md#0x1_ordered_map_remove_or_none " >remove_or_none</a >< ; K: drop, V> ; (self: &<b >mut</b > <a href =" ordered_map.md#0x1_ordered_map_OrderedMap " >ordered_map::OrderedMap</a >< ; K, V> ; , key: &K): <a href =" ../../aptos-stdlib/../move-stdlib/doc/option.md#0x1_option_Option " >option::Option</a >< ; V> ;
530+ </code ></pre >
531+
532+
533+
534+ <details >
535+ <summary >Implementation</summary >
536+
537+
538+ <pre ><code ><b >public</b > <b >fun</b > <a href =" ordered_map.md#0x1_ordered_map_remove_or_none " >remove_or_none</a >< ; K: drop, V> ; (self: &<b >mut</b > <a href =" ordered_map.md#0x1_ordered_map_OrderedMap " >OrderedMap</a >< ; K, V> ; , key: &K): Option< ; V> ; {
539+ <b >let</b > len = self.entries.<a href =" ordered_map.md#0x1_ordered_map_length " >length</a >();
540+ <b >let</b > index = <a href =" ordered_map.md#0x1_ordered_map_binary_search " >binary_search</a >(key, &self.entries, 0, len);
541+ <b >if</b > (index < ; len && key == &self.entries[index].key) {
542+ <b >let</b > <a href =" ordered_map.md#0x1_ordered_map_Entry " >Entry</a > { key: _, value } = self.entries.<a href =" ordered_map.md#0x1_ordered_map_remove " >remove</a >(index);
543+ <a href =" ../../aptos-stdlib/../move-stdlib/doc/option.md#0x1_option_some " >option::some</a >(value)
544+ } <b >else</b > {
545+ <a href =" ../../aptos-stdlib/../move-stdlib/doc/option.md#0x1_option_none " >option::none</a >()
546+ }
547+ }
548+ </code ></pre >
549+
550+
551+
518552</details >
519553
520554<a id =" 0x1_ordered_map_contains " ></a >
@@ -1741,11 +1775,11 @@ to O(n).
17411775
17421776<a id =" 0x1_ordered_map_for_each_ref_friend " ></a >
17431777
1744- ## Function ` for_each_ref_friend `
1778+ ## Function ` for_each_ref `
17451779
17461780
17471781
1748- <pre ><code ><b >public</b >(<b >friend</b >) <b >fun</b > <a href =" ordered_map.md#0x1_ordered_map_for_each_ref_friend " >for_each_ref_friend </a >< ; K: <b >copy</b >, drop, V> ; (self: &<a href =" ordered_map.md#0x1_ordered_map_OrderedMap " >ordered_map::OrderedMap</a >< ; K, V> ; , f: |&K, &V|)
1782+ <pre ><code ><b >public</b >(<b >friend</b >) <b >fun</b > <a href =" ordered_map.md#0x1_ordered_map_for_each_ref_friend " >for_each_ref </a >< ; K: <b >copy</b >, drop, V> ; (self: &<a href =" ordered_map.md#0x1_ordered_map_OrderedMap " >ordered_map::OrderedMap</a >< ; K, V> ; , f: |&K, &V|)
17491783</code ></pre >
17501784
17511785
@@ -1754,7 +1788,7 @@ to O(n).
17541788<summary >Implementation</summary >
17551789
17561790
1757- <pre ><code ><b >public</b >(<b >friend</b >) inline <b >fun</b > <a href =" ordered_map.md#0x1_ordered_map_for_each_ref_friend " >for_each_ref_friend </a >< ; K: <b >copy</b > + drop, V> ; (self: &<a href =" ordered_map.md#0x1_ordered_map_OrderedMap " >OrderedMap</a >< ; K, V> ; , f: |&K, &V|) {
1791+ <pre ><code ><b >public</b >(<b >friend</b >) inline <b >fun</b > <a href =" ordered_map.md#0x1_ordered_map_for_each_ref_friend " >for_each_ref </a >< ; K: <b >copy</b > + drop, V> ; (self: &<a href =" ordered_map.md#0x1_ordered_map_OrderedMap " >OrderedMap</a >< ; K, V> ; , f: |&K, &V|) {
17581792 <b >let</b > iter = self.<a href =" ordered_map.md#0x1_ordered_map_new_begin_iter " >new_begin_iter</a >();
17591793 <b >while</b > (!iter.<a href =" ordered_map.md#0x1_ordered_map_iter_is_end " >iter_is_end</a >(self)) {
17601794 f(iter.<a href =" ordered_map.md#0x1_ordered_map_iter_borrow_key " >iter_borrow_key</a >(self), iter.<a href =" ordered_map.md#0x1_ordered_map_iter_borrow " >iter_borrow</a >(self));
0 commit comments