21 releases
0.7.9 | Jan 25, 2024 |
---|---|
0.7.8 | Dec 20, 2023 |
0.7.7 | Nov 22, 2023 |
0.7.5 | Jun 1, 2023 |
0.2.1 | Jul 14, 2021 |
#128 in Network programming
11,505 downloads per month
Used in 13 crates
(4 directly)
355KB
991 lines
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.3–2.6MB
~37K SLoC