24 releases
0.7.12 | Jun 24, 2024 |
---|---|
0.7.10 | May 9, 2024 |
0.7.9 | Jan 25, 2024 |
0.7.8 | Dec 20, 2023 |
0.2.1 | Jul 14, 2021 |
#118 in Network programming
6,962 downloads per month
Used in 19 crates
(7 directly)
355KB
1.5K
SLoC
Metainfo
Transmissing metainfo across components.
Quickstart
Metainfo is designed to be passed through task local, so we provided a unified key for it metainfo::METAINFO
, and we recommend you to use it this way:
METAINFO.scope(...)
MetaInfo
is used to passthrough information between components and even client-server.
It supports two types of info: typed map and string k-v.
It is designed to be tree-like, which means you can share a MetaInfo
with multiple children.
Note: only the current scope is mutable.
Example:
use metainfo::MetaInfo;
fn test() {
let mut m1 = MetaInfo::new();
m1.insert::<i8>(2);
assert_eq!(*m1.get::<i8>().unwrap(), 2);
let (mut m1, mut m2) = m1.derive();
assert_eq!(*m2.get::<i8>().unwrap(), 2);
m2.insert::<i8>(4);
assert_eq!(*m2.get::<i8>().unwrap(), 4);
m2.remove::<i8>();
assert_eq!(*m2.get::<i8>().unwrap(), 2);
}
Related Projects
- Volo: A high-performance and strong-extensibility Rust RPC framework that helps developers build microservices.
- Volo-rs: The volo ecosystem which contains a lot of useful components.
- Motore: Middleware abstraction layer powered by GAT.
- Pilota: A thrift and protobuf implementation in pure rust with high performance and extensibility.
Contributing
See CONTRIBUTING.md for more information.
License
Metainfo is dual-licensed under the MIT license and the Apache License (Version 2.0).
See LICENSE-MIT and LICENSE-APACHE for details.
Community
-
Email: volo@cloudwego.io
-
How to become a member: COMMUNITY MEMBERSHIP
-
Issues: Issues
-
Feishu: Scan the QR code below with Feishu or click this link to join our CloudWeGo Volo user group.
Dependencies
~1.6–8MB
~44K SLoC