GithubHelp home page GithubHelp logo

Comments (3)

KodrAus avatar KodrAus commented on September 26, 2024

On the one hand it seems like we could actually implement Valuable in terms of the underlying bytes as Listable, and also implement Displayable, except for these constraints on the subtypes of Valuable:

Values that implement Listable must return Value::Listable from their Valuable::as_value implementation.

It almost seems like something like this on the Valuable trait might make it possible to advertise multiple representations:

pub trait Valuable {
    fn as_value(&self) -> Value;

    // default impl that can be overridden
    fn as_listable(&self) -> Option<&dyn Listable> {
        self.as_value().as_listable()
    }

    ..
}

And remove the single subtrait constraint, supporting a default, and then any number of specialized alternative representations. That constraint might be there for a good reason though.

from valuable.

hawkw avatar hawkw commented on September 26, 2024

On the one hand it seems like we could actually implement Valuable in terms of the underlying bytes as Listable,

This also makes me wonder a bit if there should be some kind of "ByteArrayable" primitive...

from valuable.

KodrAus avatar KodrAus commented on September 26, 2024

A &[u8] variant for Value seems reasonable to me, depending on how purely structural you're wanting to keep the Value enum. It does potentially mean someone looking for an array of bytes might need to consider both the Bytes and the Listable variants unless you require that values should produce the most specific variant possible (so a value that doesn't produce a Bytes variant is at fault and needs to be fixed). That would make it harder to add new specific variants in a semantically backwards-compatible way though 🤔

from valuable.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.