VillageSQL is a drop-in replacement for MySQL with extensions.
All examples on this page work on VillageSQL. Install Now →
villagesql クレートを使って Rust で書けます。SDK がすべての FFI マーシャリングを処理します。あなたは通常の Rust を書き、extension! マクロが、サーバーがロード時に呼び出す C のエントリポイントを生成します。
Rust を選ぶべき場面
次の場合、Rust が正しい選択です。- Rust を好み、C++ のコードベースを必要としない
- ガベージコレクタなしでメモリ安全性が欲しい
- 新しい拡張機能を構築しており、既存の C++ 依存関係がない
前提条件
必要なものは次のとおりです。- Rust の stable ツールチェーン — rustup.rs からインストール
- cargo-vsql — パッケージング、インストール、およびテストのための Cargo サブコマンド
cargo-vsql をインストールします。
新しいクレートのセットアップ
ライブラリクレートを作成し、SDK を追加して、設定します。Cargo.toml でクレートの種類を設定します。
Cargo.toml と同じ場所に manifest.json を追加します。
関数を書く
Rust での拡張機能の構築のページに、ROT-13 の例を使った完全な手順があります。要点は次のとおりです。fn(&[InValue]) -> VdfReturn を実装し、func! で登録し、全体を extension! で包みます。
拡張機能のテスト
mysql-test/t/basic.test にテストを書きます。
[ pass ] を出力します。
SQL でのインストール
パッケージングしてインストールします。関連項目
- Rust での拡張機能の構築 — ROT-13 の例、パッケージング、およびテストの詳細を含む完全な手順
- Rust のカスタム型 — バイナリ格納と順序付けを備えた新しい列型の定義
- Rust API リファレンス — InValue、VdfReturn、およびすべてのマクロ
- C++ 拡張機能の作成 — 同じ作業の C++ での手順