native_toolchain_rust
Dart के बिल्ड हुक्स के लिए Rust समर्थन। अपने Rust कोड को अपने Dart कोड के साथ स्वचालित रूप से बिल्ड और बंडल करें!
Dart के मूल एसेट्स के लिए Rust समर्थन
निर्भरता सूची 2 आइटम
^8.9.0^11.0.0यह अंग्रेज़ी मूल स्नैपशॉट है। नवीनतम सामग्री GitHub पर देखें।
native_toolchain_rust 🦀Build Status Github Stars MIT License
Rust support for Dart's build hooks.
assetName,
and the rest is auto-magically figured out.
(But you can still tweak the functionality as much as you need to!)flutter pub add native_toolchain_rust hooks for Flutter or dart pub add native_toolchain_rust hooks for Dart-onlynative_toolchain_rust will look (by default) for native/ or rust/ (customizable)
in your Dart package's root.
If you haven't already, create a Cargo.toml and rust-toolchain.toml in your chosen Rust directory;
keep reading for what these two files must contain
(but don't worry if you forget, you'll get a helpful error message).
hook/build.dartimport 'package:hooks/hooks.dart';
import 'package:native_toolchain_rust/native_toolchain_rust.dart';
void main(List<String> args) async {
await build(args, (input, output) async {
await RustBuilder(
assetName: 'src/my_ffi_bindings.g.dart',
// ...maybe enable some Cargo features or something in here too
).run(input: input, output: output);
});
}
Cargo.tomlKeep at least the following in your Cargo.toml.
[package]
name = "my-crate-name" # pick a name, doesn't matter
[lib]
crate-type = ["staticlib", "cdylib"] # THESE ARE IMPORTANT!
rust-toolchain.tomlKeep at least the following in your rust-toolchain.toml.
[toolchain]
# WARNING: *do not* use `stable`, `beta`, or `nightly` (alone) for the channel!
# You must specify a version number/date in order to ensure reproducible builds.
channel = "1.90.0" # or newer. another example: `nightly-2025-01-01`
# The targets you want to support; these are the default:
targets = [
# Android
"armv7-linux-androideabi",
"aarch64-linux-android",
"x86_64-linux-android",
# iOS (device + simulator)
"aarch64-apple-ios",
"aarch64-apple-ios-sim",
"x86_64-apple-ios",
# Windows
"aarch64-pc-windows-msvc",
"x86_64-pc-windows-msvc",
# Linux
"aarch64-unknown-linux-gnu",
"x86_64-unknown-linux-gnu",
# macOS
"aarch64-apple-darwin",
"x86_64-apple-darwin",
]