rust_core 1.2.0 rust_core: ^1.2.0 copied to clipboard
Pure Dart implementation of patterns in Rust's core library. Types include Result, Option, Cell, Slice, Array, Iterator, etc. Facilitates functional programming and error handling.
rust_core is a pure Dart implementation of patterns found in Rust's core library, bringing the power of Rust to Dart!
Example #
Goal: Get the index of every "!" in a string not followed by a "?"
Rust:
use std::iter::Peekable;
fn main() {
let string = "kl!sd!?!";
let mut answer: Vec<usize> = Vec::new();
let mut iter: Peekable<_> = string
.chars()
.map_windows(|w: &[char; 2]| *w)
.enumerate()
.peekable();
while let Some((index, window)) = iter.next() {
match window {
['!', '?'] => continue,
['!', _] => answer.push(index),
[_, '!'] if iter.peek().is_none() => answer.push(index + 1),
_ => continue,
}
}
assert_eq!(answer, [2, 7]);
}
Dart:
import 'package:rust_core/rust_core.dart';
void main() {
String string = "kl!sd!?!";
List<int> answer = [];
Peekable<(int, Arr<String>)> iter = string
.chars()
.mapWindows(2, identity)
.enumerate()
.peekable();
while (iter.moveNext()) {
final (index, window) = iter.current;
switch (window) {
case ["!", "?"]:
break;
case ["!", _]:
answer.add(index);
case [_, "!"] when iter.peek().isNone():
answer.add(index + 1);
}
}
expect(answer, [2, 7]);
}
Project Goals #
rust_core's primary goal is to bring Rust's features and ergonomics to Dart.
To accomplish this, Rust's functionalities are carefully adapted to Dart's paradigms, focusing on a smooth idiomatic language-compatible integration. The result is developers now have access to powerful tools previously only available to Rust developers.
True to the Rust philosophy, rust_core strives to bring reliability and performance in every feature. Every feature is robustly tested. Over 500 meaningful test suites and counting.