aptos-move/framework/move-stdlib/doc/acl.md
<a id="0x1_acl"></a>
0x1::aclAccess control list (acl) module. An acl is a list of account addresses who have the access permission to a certain object. This module uses a <code><a href="vector.md#0x1_vector">vector</a></code> to represent the list, but can be refactored to use a "set" instead when it's available in the language in the future.
ACLemptyaddremovecontainsassert_contains<a id="0x1_acl_ACL"></a>
ACL<a id="@Constants_0"></a>
<a id="0x1_acl_ECONTAIN"></a>
The ACL already contains the address.
<pre><code><b>const</b> <a href="acl.md#0x1_acl_ECONTAIN">ECONTAIN</a>: u64 = 0; </code></pre><a id="0x1_acl_ENOT_CONTAIN"></a>
The ACL does not contain the address.
<pre><code><b>const</b> <a href="acl.md#0x1_acl_ENOT_CONTAIN">ENOT_CONTAIN</a>: u64 = 1; </code></pre><a id="0x1_acl_empty"></a>
emptyReturn an empty ACL.
<pre><code><b>public</b> <b>fun</b> <a href="acl.md#0x1_acl_empty">empty</a>(): <a href="acl.md#0x1_acl_ACL">acl::ACL</a> </code></pre> <details> <summary>Implementation</summary> <pre><code><b>public</b> <b>fun</b> <a href="acl.md#0x1_acl_empty">empty</a>(): <a href="acl.md#0x1_acl_ACL">ACL</a> { <a href="acl.md#0x1_acl_ACL">ACL</a>{ list: <a href="vector.md#0x1_vector_empty">vector::empty</a><<b>address</b>>() } } </code></pre> </details><a id="0x1_acl_add"></a>
addAdd the address to the ACL.
<pre><code><b>public</b> <b>fun</b> <a href="acl.md#0x1_acl_add">add</a>(self: &<b>mut</b> <a href="acl.md#0x1_acl_ACL">acl::ACL</a>, addr: <b>address</b>) </code></pre> <details> <summary>Implementation</summary> <pre><code><b>public</b> <b>fun</b> <a href="acl.md#0x1_acl_add">add</a>(self: &<b>mut</b> <a href="acl.md#0x1_acl_ACL">ACL</a>, addr: <b>address</b>) { <b>assert</b>!(!self.list.<a href="acl.md#0x1_acl_contains">contains</a>(&addr), <a href="error.md#0x1_error_invalid_argument">error::invalid_argument</a>(<a href="acl.md#0x1_acl_ECONTAIN">ECONTAIN</a>)); self.list.push_back(addr); } </code></pre> </details><a id="0x1_acl_remove"></a>
removeRemove the address from the ACL.
<pre><code><b>public</b> <b>fun</b> <a href="acl.md#0x1_acl_remove">remove</a>(self: &<b>mut</b> <a href="acl.md#0x1_acl_ACL">acl::ACL</a>, addr: <b>address</b>) </code></pre> <details> <summary>Implementation</summary> <pre><code><b>public</b> <b>fun</b> <a href="acl.md#0x1_acl_remove">remove</a>(self: &<b>mut</b> <a href="acl.md#0x1_acl_ACL">ACL</a>, addr: <b>address</b>) { <b>let</b> (found, index) = self.list.index_of(&addr); <b>assert</b>!(found, <a href="error.md#0x1_error_invalid_argument">error::invalid_argument</a>(<a href="acl.md#0x1_acl_ENOT_CONTAIN">ENOT_CONTAIN</a>)); self.list.<a href="acl.md#0x1_acl_remove">remove</a>(index); } </code></pre> </details><a id="0x1_acl_contains"></a>
containsReturn true iff the ACL contains the address.
<pre><code><b>public</b> <b>fun</b> <a href="acl.md#0x1_acl_contains">contains</a>(self: &<a href="acl.md#0x1_acl_ACL">acl::ACL</a>, addr: <b>address</b>): bool </code></pre> <details> <summary>Implementation</summary> <pre><code><b>public</b> <b>fun</b> <a href="acl.md#0x1_acl_contains">contains</a>(self: &<a href="acl.md#0x1_acl_ACL">ACL</a>, addr: <b>address</b>): bool { self.list.<a href="acl.md#0x1_acl_contains">contains</a>(&addr) } </code></pre> </details><a id="0x1_acl_assert_contains"></a>
assert_containsassert! that the ACL has the address.
<pre><code><b>public</b> <b>fun</b> <a href="acl.md#0x1_acl_assert_contains">assert_contains</a>(self: &<a href="acl.md#0x1_acl_ACL">acl::ACL</a>, addr: <b>address</b>) </code></pre> <details> <summary>Implementation</summary> <pre><code><b>public</b> <b>fun</b> <a href="acl.md#0x1_acl_assert_contains">assert_contains</a>(self: &<a href="acl.md#0x1_acl_ACL">ACL</a>, addr: <b>address</b>) { <b>assert</b>!(self.<a href="acl.md#0x1_acl_contains">contains</a>(addr), <a href="error.md#0x1_error_invalid_argument">error::invalid_argument</a>(<a href="acl.md#0x1_acl_ENOT_CONTAIN">ENOT_CONTAIN</a>)); } </code></pre> </details><a id="@Specification_1"></a>
<a id="@Specification_1_ACL"></a>
ACL<a id="0x1_acl_spec_contains"></a>
<pre><code><b>fun</b> <a href="acl.md#0x1_acl_spec_contains">spec_contains</a>(self: <a href="acl.md#0x1_acl_ACL">ACL</a>, addr: <b>address</b>): bool { <b>exists</b> a in self.list: a == addr } </code></pre><a id="@Specification_1_add"></a>
add<a id="@Specification_1_remove"></a>
remove<a id="@Specification_1_contains"></a>
contains<a id="@Specification_1_assert_contains"></a>
assert_contains