
【完全保存版】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について
これは他のコントラクトから依存される場合のフラグになります。
これがあることで、他から依存されることを前提としたコンパイルの挙動を行います。

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

4 [profile.dev]について(ビルト時の設定)
1 [profile.dev]について
こちらはビルドを行うときの設定についての場所です。

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

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