1个不稳定版本
0.74.3 |
|
---|---|
0.1.0 | 2024年6月11日 |
#464 in HTTP服务器
在 2 个Crates中使用 (via graphql-federated-graph)
12KB
238 行
包装被压缩成u32以实现Copy。它在多个地方被复制以跟踪当前的包装。它功能上等同于
struct Wrapping {
inner_is_required: bool,
/// Innermost to outermost.
list_wrappings: VecDeque<ListWrapping>
}
由于ListWrapping只有两种情况,并且我们不会遇到荒谬的包装级别,因此我们可以进行位打包。当前结构支持多达21个list_wrappings。
其结构如下
start (5 bits)
↓ ↓ list_wrapping (1 == Required / 0 == Nullable)
┌────┐ ┌────────────────────────┐
0000_0000_0000_0000_0000_0000_0000_0000
└────┘
↑ end (5 bits)
↑
inner_is_required flag (1 == required)
list_wrapping是从内部到外部存储的,使用起始和结束作为list_wrapping位内的位置。像简化的固定容量VecDeque一样操作。为了简化位移操作,list_wrapping是从右到左存储的。
依赖项
~0.4–1MB
~23K SLoC