RustSBI 0.2.0-alpha.5 版本发布
RustSBI 0.2.0-alpha.5版本发布。良好支持您的业务和学术研究系统,兼容性强,先进的模块化设计,值得信赖。 RustSBI是RISC-V下的引导程序环境,它支持多款模拟器和芯片平台。在今年的首届全国大学生系统能力竞赛操作系统赛中,RustSBI被来自全国高校的赛队广泛使用,用于实现自己的比赛用系统,并取得全国一、二和三等奖。
本次更新特性:
- 完整支持RISC-V SBI 0.3正式版标准
- 支持SBI PMU性能监视扩展
兼容性修改指南:
- rustsbi::ecall指令要求[usize; 6],加入ctx.a5;
- 降级embedded-hal到0.2.6
文档主页:https://docs.rs/rustsbi/0.2.0-alpha.5/
default-args: 零开销实现带缺省值的函数
default-args: zero-cost default arguments in rust!
通过使用default_args::default_args!
宏来实现带缺省值的函数,下面是用例:
use default_args::default_args;
// this would make a macro named `foo`
// and original function named `foo_`
default_args! {
fn foo(important_arg: u32, optional: u32 = 100) -> String {
format!("{}, {}", important_arg, optional)
}
}
// in other codes ...
assert_eq!(foo!(1), "1, 100"); // foo(1, 100)
assert_eq!(foo!(1, 3), "1, 3"); // foo(1, 3)
assert_eq!(foo!(1, optional = 10), "1, 10"); // foo(1, 10)
// let's make another one
default_args! {
#[inline]
pub async unsafe extern "C" fn bar<S1, S2, S3>(a: S1, b: S2 = "b", c: S3 = "c") -> String
where
S1: AsRef<str>,
S2: AsRef<str>,
S3: AsRef<str>,
{
format!("{}, {}, {}", a.as_ref(), b.as_ref(), c.as_ref())
}
// that was long signature!
}
// in other codes ...
assert_eq!(unsafe { bar!("a") }.await, "a, b, c");
assert_eq!(unsafe { bar!("a", "d") }.await, "a, d, c");
// you can even mix named & unnamed argument in optional arguments
assert_eq!(unsafe { bar!("a", "d", c = "e") }.await, "a, d, e");
assert_eq!(unsafe { bar!("a", c = "e") }.await, "a, b, e");
项目主页:https://github.com/buttercrab/default-args.rs
RustDesk 1.1.8 发布:开源远程桌面软件
RustDesk 1.1.8 release: yet another remote desktop software
开源远程桌面软件RustDesk 1.1.8 版本发布,更多细节参见Release Notes
项目主页:https://github.com/rustdesk/rustdesk
From 日报小组 odd-cat
社区学习交流平台订阅:
评论区
写评论还没有评论