見出し画像

【完全保存版】AstarのWASMコントラクトのCargo.tomlを学ぼう

本日は、Cargo.tomlファイルについて学んでいきたいと思います。

ちなみに、「Cargo.toml」とは、パッケージを管理するツールである「Cargo」設定を行うためのファイルです。

1 [dependencies]について(依存関係の設定)

1 [dependencies]について

ここで、依存関係の設定を行います。

ここで、使いたい他のRustクレートを指定します。

2 使用する名前について

下のような場合、右で規定したパッケージを「scale」という名前で使用するという指定になります。

3 default-featuresについて

これはデフォルトのフィーチャーについて規定し、基本的には、falseになります。

これは、不要な依存関係や機能を含めないためです。

4 featuresについて

ここでは

「derive」フィーチャーを有効にしています。

2 [lib]について(ライブラリクレートの設定)

6月21日追記
[lib]について、Astarのコアメンバーから、path以外は書く必要がない旨を教えてもらいました。
そのため、この章は参考程度でお願いします。

1 [lib]について

ここでは、ライブラリクレートの設定を行っています。

なお、「クレート(crate)」とはコードをパッケージ化する基本単位です。

そして、他から使われる、再利用可能な機能を提供しているのが、ライブラリクレートです。

2 pathについて

どのファイルを使うのかを規定しています。

3 crate-typeについて

これは、作られるバイナリの種類を示しています。

4 cdylibについて

ここでは、C互換ダイナミックライブラリを作ることを表しています。

これは主に、他の言語から呼び出されるときに使用されます。

5 rlibについて

これは、Rust静的ライブラリを作ります。

「cdylib」と異なり、「dy(動的)」が入っていませんね。

これは、他のRustライブラリから使用されるためのものです。

つまり、他のコントラクトから依存される場合には、これがないと動きません。

3 [features]について(機能の有効性の設定)

1 [features]について

これは、何の機能を有効にするのか(または、無効にするのか)を設定する場所です。

2 default = ["std"]について

これは、デフォルトとして、「std」という機能を有効にするということを表しています。

そして、「std」とは、Rustの標準(Standard)ライブラリを表します。

つまり、デフォルトでRustの標準ライブラリを使用することを示しています。

3 std = ["", "",]について

ここは、依存関係で有効化する「std」がどれかを表しています。

例えば、「ink」において、有効化する「std」「ink/std」になります。

仮に、「openbrush/std」が書いていなければ、「openbrush」「std」は有効になりません。

4 ink-as-dependencyについて

これは他のコントラクトから依存される場合のフラグになります。

これがあることで、他から依存されることを前提としたコンパイルの挙動を行います。

このコントラクトが他から依存される場合は、その依存先のコントラクトで、下のように設定されます。

https://use-ink.translate.goog/ink-vs-solidity/?_x_tr_sl=en&_x_tr_tl=ja&_x_tr_hl=ja&_x_tr_pto=sc

4 [profile.dev]について(ビルト時の設定)

1 [profile.dev]について

こちらはビルドを行うときの設定についての場所です。

2 codegen-unitsについて

これは、「codegen(コードの生成)」をいくつのCPUコアで行うかを定めます。

多いほど、ビルドの時間は短縮されますが、最終的なバイナリのパフォーマンスは、必ずしも良い影響を与えません。


サポートをしていただけたらすごく嬉しいです😄 いただけたサポートを励みに、これからもコツコツ頑張っていきます😊