Comments (3)
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.
On the one hand it seems like we could actually implement
Valuable
in terms of the underlying bytes asListable
,
This also makes me wonder a bit if there should be some kind of "ByteArrayable
" primitive...
from valuable.
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)
- `NamedValues::get` footgun.
- Feature request: Expose doc comments for struct/enum/field definitions HOT 1
- Feature request: Allow reading structable attributes
- the trait `tracing::Value` is not implemented for `valuable::Value<'_> HOT 2
- question: is valuable expected to work with tracing macros? HOT 1
- Create a span for plugin init HOT 1
- Constructing objects from `Value`
- derive: implement #[valuable] attributes HOT 3
- Add a way to iterate on non-primitives/visit specific slices for Listable
- Visitor holding `Value` HOT 13
- Consider adding a concrete lifetime to the Visit trait HOT 1
- Consider changing Value::Error to &(dyn Error + 'static) HOT 1
- Owned [NamedField] for Fields HOT 10
- Consider Visit::visit_key + Visit::visit_value HOT 4
- Release initial version HOT 6
- publish `valuable-serde`
- `dyn Display` primitive value HOT 1
- Strange happenings with manual implementation of `Valuable` HOT 1
- Introduce a lifetime generic to `Visit` in order to allow borrowing out specific parts of the `valuable::Value` during visits HOT 1
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
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.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from valuable.