# How to implement "Actor classes" in rust

**URL:** <https://forum.dfinity.org/t/how-to-implement-actor-classes-in-rust/5011>\
**Category:** Programs & Applications\
**Created:** [June 10, 2021, 9:35am UTC](https://forum.dfinity.org/t/how-to-implement-actor-classes-in-rust/5011 "2021-06-10T09:35:36Z")\
**Posts on this page:** 4\
**Page:** 1

<div class="post-metadata">

**Author:** ![orange\_xc](https://avatars.discourse-cdn.com/v4/letter/o/b487fb/32.png) [@orange\_xc](https://forum.dfinity.org/u/orange_xc)\
**Post date:** [June 10, 2021, 9:35am UTC](https://forum.dfinity.org/t/how-to-implement-actor-classes-in-rust/5011/1 "2021-06-10T09:35:36Z")

</div>

In motoko, there is a “Actor classes”, does Rust have a similar approach？

```auto
Actor classes enable you to create networks of actors programmatically. Currently, actor classes have to be defined in a separate source file. 

```

---

<div class="post-metadata">

**Author:** ![ayazgv](https://sea1.discourse-cdn.com/flex023/user_avatar/forum.dfinity.org/ayazgv/32/1587_2.png) [@ayazgv](https://forum.dfinity.org/u/ayazgv)\
**Post date:** [August 10, 2021, 10:35am UTC](https://forum.dfinity.org/t/how-to-implement-actor-classes-in-rust/5011/2 "2021-08-10T10:35:08Z")

</div>

I was also wanted to ask same question, any update?

---

<div class="post-metadata">

**Author:** ![wewei](https://sea1.discourse-cdn.com/flex023/user_avatar/forum.dfinity.org/wewei/32/4486_2.png) [@wewei](https://forum.dfinity.org/u/wewei)\
**Post date:** [February 12, 2022, 4:31pm UTC](https://forum.dfinity.org/t/how-to-implement-actor-classes-in-rust/5011/3 "2022-02-12T16:31:26Z")

</div>

+1, is there a way for rust canister to dynamically create new canisters?

---

<div class="post-metadata">

**Author:** ![3cL1p5e7](https://sea1.discourse-cdn.com/flex023/user_avatar/forum.dfinity.org/3cl1p5e7/32/4649_2.png) [@3cL1p5e7](https://forum.dfinity.org/u/3cL1p5e7)\
**Post date:** [February 12, 2022, 5:23pm UTC](https://forum.dfinity.org/t/how-to-implement-actor-classes-in-rust/5011/4 "2022-02-12T17:23:43Z")

</div>

Make update calls `create_canister` and `install_code` to `management` canister

> **[Internet Computer | Documentation](https://smartcontracts.org/docs/interface-spec/index.html#ic-management-canister)**
>
> Documentation for the internet computer.

```nohighlight
use ic_cdk::export::candid::{encode_args, Principal};
use ic_cdk::api::call::{call, call_with_payment, CallResult};

let management_canister = Principal::management_canister();

# Next is untested code
let req = ...
let cycles = ...
call_with_payment(management_canister, "create_canister", (req,), cycles).await # will return -> CallResult<()>
call(management_canister, "install_code", (req2,)).await

# Use encode_args for arguments encoding

```

@wewei Update ^
