nidula 0.2.0 nidula: ^0.2.0 copied to clipboard
A lightweight Dart library for Rust-like Option/Result types. Supports exhaustive pattern matching and compile-time safe, chainable None/Err propagation.
import 'package:nidula/nidula.dart';
Result<double, String> example(Result<double, String> r) {
return Result.syncTryScope<double, String>((et) {
r = Ok(r.try_(et) / 2);
return Ok(r.try_(et));
});
}
void main() {
print('#1: ${example(Err('s'))}'); // #1: Err(s)
print('#2: ${example(Ok(14))}'); // #2: Ok(7.0)
print(Result.syncTryScope<I, String>((et) {
return Ok(
Ok<I, String>(I()).try_(et).make().try_(et).make().try_(et),
);
}));
}
class I {
Result<I, String> make() {
return Ok(I());
}
}