oxidized 6.2.0 copy "oxidized: ^6.2.0" to clipboard
oxidized: ^6.2.0 copied to clipboard

Definitions of Rust-like types, Option and Result, to promote safer programming.

example/oxidized_example.dart

import 'dart:io';
import 'package:oxidized/oxidized.dart';

Result<String, Exception> readFileSync(String name) {
  return Result.of(() {
    return File(name).readAsStringSync();
  });
}

Future<Result<Future<String>, Exception>> readFile(String name) async {
  return Result.of(() async {
    return await File(name).readAsString();
  });
}

void main() async {
  var result = readFileSync('README.md');

  // you can check like so (or with `is` keyword against `Err`)
  if (result.isErr()) {
    print('oh no, unable to read the file!');
  } else {
    print('read the file successfully');
    // it is safe to call .unwrap() here
  }

  // or you can use the match function
  result.match((text) {
    print('first 80 characters of file:\n');
    print(text.substring(0, 80));
  }, (err) => print(err));

  // also, you can return values in a functional way
  final length = result.when(
    ok: (text) => text.length,
    err: (err) => -1,
  );
  print(length);

  // using the "catching" constructor with futures is also feasible
  var futureResult = await readFile('LICENSE');
  futureResult.when(
    ok: (text) async {
      var text = await futureResult.unwrap();
      print('\nlength of LICENSE file: ${text.length}');
    },
    err: (err) => print(err),
  );
}
47
likes
155
points
11.4k
downloads

Publisher

unverified uploader

Weekly Downloads

Definitions of Rust-like types, Option and Result, to promote safer programming.

Homepage
Repository (GitHub)
View/report issues

Documentation

API reference

License

BSD-3-Clause (license)

Dependencies

equatable

More

Packages that depend on oxidized