allocクレートを使えるようにする
@garasubo
no_stdプログラミング
stdはOSの機能を呼び出すことで機能を提供している
OSが存在しない環境でのプログラミングではこれらの機能が使えない
coreクレート
no_std環境でも使える言語機能を提供
例)Option, Result, cell, fmt
ベアメタルプログラミングでは基本coreクレートに含まれる機能のみ利用可能
allocクレート
メモリ管理を行うアロケーターが定義されていれば使うことができるクレート
例)Vec, String, Box, Rc, Arc
アロケーターを実装する
要はC言語のmallocとfreeのようなものを実装してヒープ領域を管理できる何かが必要
→ alloc::alloc::GlobalAllocトレイトを実装した構造体をグローバル定数として宣言して、#[global_allocator]をつける
std環境でもアロケーターアルゴリズムを変えたい場合使うことがある
Rustの公式ドキュメントよりglobal_allocatorを定義する例
GlobalAllocを実装する
allocとdeallocを実装すればおしまい
アロケーター実装上の注意
アロケーターのアルゴリズム
LTで話し切るのは難しい...
参考