Comments (2)
I'll add: in general, the client needs to ignore unrecognized message types and unknown fields inside known messages. This gives us some room for expansion in the future. The unit tests ought to signal an error if we receive unknown messages, but actual runtime code should ignore them. In Twisted I do this with a log.err()
call, and the testing framework knows that anything written to the error log should flunk the test. And we test tolerance by asking the testing framework to selectively ignore those error messages in specific tests. I don't know the Rust testing ecosystem well enough to suggest a technique or a library, but I'm sure one is out there somewhere.
from magic-wormhole.rs.
serde
has a few options to future-proof deserialization:
deny_unknown_fields
Always error during deserialization when encountering unknown fields. When this attribute is not present, by default unknown fields are ignored for self-describing formats like JSON.
- So we don't need to do anything here for unknown attributes
- For known optional attributes, use
Optional<>
or#[serde(default)]
- For unknown enum variants, use
#[serde(other)]
. Sadly, there is no way to access that unknown value yet. - There are tricks to store all unmatched keys into a map for dynamic access (I'd have to look it up for an example)
from magic-wormhole.rs.
Related Issues (20)
- Feature Request: cli installable using cargo-install HOT 2
- feature request: support ssh invite/ssh accept modes HOT 5
- Add function to get claimed nameplates
- Flaky tests
- rand >= 0.8 break WASM support HOT 3
- Feature suggestion: show bitrate in progress bar HOT 5
- Progress bar bitrate intermittently drops on the sending side HOT 10
- `send --code` does not verify that a nameplate was provided and uses the entire code as the nameplate instead HOT 2
- RUSTSEC-2023-0037: crate has been renamed to `crypto_secretbox` HOT 1
- Release mac binaries HOT 1
- RUSTSEC-2023-0052: webpki: CPU denial of service in certificate path building
- [Feature request] Drop xsalsa20poly1305 dependency HOT 3
- Adapt help message for renamed binary
- Windows binary for v0.6.1 HOT 2
- Enable transfers over link scoped addresses
- Expose the TLS implementation features of async-tungstenite
- CI test failures HOT 1
- For Android HOT 3
- Performance issue on Mac with M1 pro HOT 3
- [FR] Please publish binary crate on crates.io, too
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 magic-wormhole.rs.