Pakete, Repositories und App-Kategorien suchen

Paketdetailsv6.2.0

oxidized

Definitionen von Rust-ähnlichen Typen, Option und Result, um sichereres Programmieren zu fördern.

AndroidiOSWebmacOSWindowsLinux
30-Tage-Downloads
11.300
Likes
52
Pub-Punkte
145

Paket installieren

flutter pub add oxidized

Paketübersicht

Aus öffentlichen Paketdaten erstellte Orientierung.

Oxidized bietet für Dart Option- und Result-Typen an, die von Rust inspiriert sind und eine sicherere sowie ausdrucksstärkere Fehlerbehandlung ermöglichen. Durch die Modellierung optionaler Werte (Option) und Operationen, die fehlschlagen können (Result), hilft es Entwicklern, null-basierte Fehler zu vermeiden und Fehler explizit zu behandeln. Diese Typen fördern funktionale Programmiermuster und verbessern die Klarheit und Robustheit des Codes. Das Paket ist leichtgewichtig und lässt sich nahtlos in bestehende Dart-Projekte auf allen wichtigen Plattformen integrieren.

Anwendungsfälle

  • Sichere Handhabung von Nullable-Werten
  • Ersetzen von Null-Prüfungen durch expliziten Option-Gebrauch
  • Funktionsergebnisse mit Erfolg/Fehler-Zuständen verwalten
  • Resiliente Fehlerbehandlungslogik schreiben
  • Funktionale Programmiermuster in Dart übernehmen

Hauptmerkmale

  • Rust-ähnlicher Option-Typ
  • Rust-ähnlicher Result-Typ
  • Null-Sicherheit durch explizite Behandlung
  • Funktionsprogrammierhilfen
  • Plattformübergreifende Kompatibilität

Geeignet für

  • Entwickler, die sicherere Alternativen zu null suchen
  • Teams, die funktionale Programmierstile übernehmen
  • Projekte, die eine robuste Fehlerverwaltung erfordern
  • Dart-Anwendungen für mehrere Plattformen
  • Diejenigen, die Laufzeitabstürze durch Nullverweise reduzieren möchten

Hinweise

  • Lernkurve für Entwickler, die mit Option/Result nicht vertraut sind
  • Mögliche Redundanz bei einfachen Fällen
  • Erfordert sorgfältige Integration, um Überengineering zu vermeiden
  • Kein Ersatz für Dart's eingebaute Null-Sicherheit
  • Kann die Komplexität in kleinen oder trivialen Funktionen erhöhen

Original-README

Originaler README-Schnappschuss aus dem verknüpften Quell-Repository. Aktuelle Inhalte finden Sie im Repository.

oxidized

A Dart package with types similar to those found in Rust, such as the Result which represents either a value or an error, and Option which either contains Some value or None.

Motivation

The Option and Result types are akin to the "sum types" found in languages such as OCaml and Rust. They encourage safer code by making errors and possible "null" values (i.e. None) a necessary part of the code flow, requiring you to deal with these cases appropriately. For an illustration of how this style of coding can prove to be helpful, see the excellent tutorial series by Matt Rešetá Flutter TDD Clean Architecture Course – Entities & Use Cases in which he uses the Either type from the dartz package to represent either a success or a failure. The Result type in this package is specifically designed for this purpose, making it easy to remember which part is the "success" and which is the "failure" (imagine trying to remember "Is the right side the failure? Or was it the left?").

Usage

A simple example using synchronous I/O to avoid nested futures is shown below. For additional examples, see the Dart code in the example directory.

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

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

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

  result.match((text) {
    print('first 80 characters of file:\n');
    print(text.substring(0, 80));
  }, (err) => print(err));

  // or in a more functional way:
  final msg = result.when(
    ok: (text) => 'first 80 characters of file:\n$text.substring(0, 80)',
    err: (err) => err,
  );
  print(msg);
}

Prior Art

The dartz package offers many functional programming helpers, including the Either type, which is similar to Result, with the difference being that it represents any two types of values.

The either_option package has both Either and Option and supports all of the typical functional operations.

The result package offers a few basic operations and may be adequate for simple cases.

The rust_like_result offers a simple Result type similar to the one in Rust.

The simple_result package provides a similar Result type based on the type of the same name in Swift.

Kategorien

Abhängigkeiten

Abhängigkeiten 1 Einträge

Quell-Repository

Projekte, die dieses Paket verwenden