Buscar pacotes, repositórios e categorias de apps

Detalhes do pacotev6.2.0

oxidized

Definições de tipos semelhantes ao Rust, Option e Result, para promover programação mais segura.

AndroidiOSWebmacOSWindowsLinux
Downloads em 30 dias
11,3 mil
Curtidas
52
Pontos Pub
145

Instalar pacote

flutter pub add oxidized

Visão geral do pacote

Orientação gerada a partir de informações públicas. Apenas para referência.

Oxidized fornece tipos Option e Result inspirados no Rust para o Dart, permitindo um tratamento de erros mais seguro e expressivo. Modelando valores opcionais (Option) e operações que podem falhar (Result), ele ajuda os desenvolvedores a evitar bugs relacionados a nulos e a lidar com erros de forma explícita. Esses tipos incentivam padrões de programação funcional, melhorando a clareza e robustez do código. O pacote é leve e se integra perfeitamente em projetos Dart existentes em todas as principais plataformas.

Casos de uso

  • Manipulando valores nulos de forma segura
  • Substituindo verificações de nulo pelo uso explícito de Option
  • Gerenciando resultados de funções com estados de sucesso/falha
  • Escrevendo lógica de tratamento de erros resiliente
  • Adotando padrões de programação funcional em Dart

Principais recursos

  • Tipo Option semelhante ao Rust
  • Tipo Result semelhante ao Rust
  • Segurança nula por meio de tratamento explícito
  • Ferramentas de programação funcional
  • Compatibilidade multiplataforma

Indicado para

  • Desenvolvedores procurando alternativas mais seguras ao null
  • Equipes adotando estilos de programação funcional
  • Projetos que exigem gerenciamento robusto de erros
  • Aplicações Dart direcionadas a múltiplas plataformas
  • Aqueles que desejam reduzir falhas em tempo de execução causadas por referências nulas

Considerações

  • Curva de aprendizado para desenvolvedores desconhecidos com Option/Result
  • Possível verbosidade em casos simples
  • Requer integração cuidadosa para evitar superengenharia
  • Não é substituto da segurança contra nulos embutida no Dart
  • Pode aumentar a complexidade em funções pequenas ou triviais

README original

Snapshot do README original do repositório-fonte vinculado. Consulte o repositório para o conteúdo mais recente.

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.

Categorias

Dependências

Lista de dependências 1 itens

Repositório-fonte

Projetos que usam este pacote