7个版本
0.1.6 | 2023年4月14日 |
---|---|
0.1.5 | 2023年4月14日 |
0.1.4 | 2022年12月16日 |
0.1.3 | 2022年9月1日 |
#1053 在 数据结构
6,446 每月下载量
被 47 个 包使用(11 直接使用)
9KB
152 行
Contextual
一个处理上下文中数据的小包。
use contextual::{WithContext, AsRefWithContext, DisplayWithContext};
use std::fmt;
/// Index of an element in some array.
pub struct Index(usize);
impl<T, C: AsRef<[T]>> AsRefWithContext<T, C> for Index {
fn as_ref_with<'a>(&'a self, context: &'a C) -> &'a T {
&context.as_ref()[self.0]
}
}
impl<'a, C: AsRef<[&'a str]>> DisplayWithContext<C> for Index {
fn fmt_with(&self, context: &C, f: &mut fmt::Formatter) -> fmt::Result {
use fmt::Display;
context.as_ref()[self.0].fmt(f)
}
}
let i = Index(1);
let context = ["a", "b", "c"];
print!("index: {}", i.with(&context));
assert_eq!(*i.with(&context).as_ref(), "b")
许可协议
根据以下任一许可协议许可:
- Apache License, Version 2.0 (LICENSE-APACHE 或 https://apache.ac.cn/licenses/LICENSE-2.0)
- MIT 许可协议 (LICENSE-MIT 或 http://opensource.org/licenses/MIT)
您可选。
贡献
除非您明确声明,否则根据Apache-2.0许可协议定义的任何有意提交以包含在作品中的贡献,应按上述方式双许可,不附加任何额外条款或条件。