Skip to content

[Enum] generic, constraint, types and named parameters for ADT Enums #2006

Closed
@igotfr

Description

@igotfr

Dart enums are anemics and force us to use class

Dart Proposal

enum Option<T> {
    None,
    Some(T)
}

var functor = Option<int>.Some(4);
enum IpAddr {
    V4(String),
    V6(String)
}

var ip = IpAddr.V4("0.0.0.0");
enum IpAddr {
    V4(int, int, int, int),
    V6(String)
}

var ip = IpAddr.V4(192, 168, 1, 1);
enum Message {
    Quit,
    Move({ int x, int y }),
    Write(String),
    ChangeColor(int, int, int)
}

var message = Message.Move(x: 45, y: -82);

Rust Enums

pub enum Option<T> {
    None,
    Some(T)
}
enum IpAddr {
    V4(String),
    V6(String)
}
enum IpAddr {
    V4(u8, u8, u8, u8),
    V6(String)
}
enum Message {
    Quit,
    Move { x: i32, y: i32 },
    Write(String),
    ChangeColor(i32, i32, i32)
}

Metadata

Metadata

Assignees

No one assigned

    Labels

    featureProposed language feature that solves one or more problems

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions