前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >【Rust 日报】2023-09-24 cfg_match!已添加到标准库

【Rust 日报】2023-09-24 cfg_match!已添加到标准库

作者头像
MikeLoveRust
发布2023-09-26 20:02:04
1790
发布2023-09-26 20:02:04
举报

cfg_match!已添加到标准库

代码语言:javascript
复制
#![feature(cfg_match)]

cfg_match! {
    cfg(unix) => {
        fn foo() { /* unix specific functionality */ }
    }
    cfg(target_pointer_width = "32") => {
        fn foo() { /* non-unix, 32-bit functionality */ }
    }
    _ => {
        fn foo() { /* fallback implementation */ }
    }
}

GitHub: https://github.com/rust-lang/rust/pull/115416

viewbuilder跨平台UI框架

该 crate 为 UI 后端提供了一种类似于 HTML 的渲染 API。它专为作为 concoct 的后端而构建,但也可以使用它作为后端来引入自己的状态管理工具,或者构建自己的框架。

特性如下:

  • 跨平台,支持桌面和移动设备。
  • 具备类似于HTML的事件处理API。
  • 使用taffy实现的CSS弹性盒子和网格布局。
  • 通过accesskit实现辅助功能支持。
  • 使用rust-skia实现高性能渲染。

使用示例:

代码语言:javascript
复制
let mut tree = Tree::default();
let root = Element::new()
    .align_items(AlignItems::Center)
    .justify_content(JustifyContent::Center)
    .child(tree.insert("Hello World!"))
    .build(&mut tree);

viewbuilder::run(tree, root)

GitHub: https://github.com/concoct-rs/viewbuilder

fancy-duration v0.6.0发布

fancy-duration 实现了类似于 Go 语言的 time.ParseDuration 的方案,生成了一个适用于可以使用秒和纳秒的任何类型的通用持续时间。它默认支持 serde、time 和 chrono crate,并提供了你可以实现的特性,以使你自己的持续时间与它兼容,从而也与 serde 等兼容。它提供了紧凑和空格分隔的格式。

使用示例:

代码语言:javascript
复制
use std::time::Duration;
use fancy_duration::FancyDuration;

pub fn main() {
    assert_eq!(FancyDuration(Duration::new(20, 0)).to_string(), "20s");
    assert_eq!(FancyDuration(Duration::new(600, 0)).to_string(), "10m");
    assert_eq!(FancyDuration(Duration::new(120, 0)).to_string(), "2m");
    assert_eq!(FancyDuration(Duration::new(185, 0)).to_string(), "3m 5s");
    assert_eq!(FancyDuration::<Duration>::parse("3m 5s").unwrap().duration(), Duration::new(185, 0));
    assert_eq!(FancyDuration(Duration::new(185, 0)).to_string(), "3m 5s");

    #[cfg(feature = "time")]
    {
        // also works with time::Duration from the `time` crate
        assert_eq!(FancyDuration(time::Duration::new(20, 0)).to_string(), "20s");
        assert_eq!(FancyDuration(time::Duration::new(600, 0)).to_string(), "10m");
        assert_eq!(FancyDuration(time::Duration::new(120, 0)).to_string(), "2m");
        assert_eq!(FancyDuration(time::Duration::new(185, 0)).to_string(), "3m 5s");
        assert_eq!(FancyDuration::<time::Duration>::parse("3m 5s").unwrap().duration(), time::Duration::new(185, 0));
        assert_eq!(FancyDuration(time::Duration::new(185, 0)).to_string(), "3m 5s");
    }

    #[cfg(feature = "chrono")]
    {
        // also works with chrono!
        assert_eq!(FancyDuration(chrono::Duration::seconds(20)).to_string(), "20s");
        assert_eq!(FancyDuration(chrono::Duration::seconds(600)).to_string(), "10m");
        assert_eq!(FancyDuration(chrono::Duration::seconds(120)).to_string(), "2m");
        assert_eq!(FancyDuration(chrono::Duration::seconds(185)).to_string(), "3m 5s");
        assert_eq!(FancyDuration::<chrono::Duration>::parse("3m 5s").unwrap().duration(), chrono::Duration::seconds(185));
        assert_eq!(FancyDuration(chrono::Duration::seconds(185)).to_string(), "3m 5s");
    }
}

GitHub: https://github.com/erikh/fancy-duration

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2023-09-25 23:49,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 Rust语言学习交流 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • cfg_match!已添加到标准库
  • viewbuilder跨平台UI框架
  • fancy-duration v0.6.0发布
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档