< 返回版块

长琴 发表于 2024-09-09 07:43

Tags:rust,日报,hypertext,txt-fmt,lookbookcomfy

[new lib] hypertext

hypertext是一个Rust HTML模板框架。

特性如下:

  • 检查元素名称/属性的类型
  • 完全可扩展,可用于非标准元素/属性
  • 支持#![no_std]
  • 自动转义
  • 默认情况下采用延迟渲染,以避免多次分配
  • 在嵌套文档的情况下表现出色,其他库可能在这方面表现不佳

示例:

use hypertext::{html_elements, GlobalAttributes, RenderIterator, Renderable};

let shopping_list = ["milk", "eggs", "bread"];

let shopping_list_maud = hypertext::maud! {
    div {
        h1 { "Shopping List" }
        ul {
            @for (&item, i) in shopping_list.iter().zip(1..) {
                li.item {
                    input #{ "item-" (i) } type="checkbox";
                    label for={ "item-" (i) } { (item) }
                }
            }
        }
    }
}
.render();

// or, alternatively:

let shopping_list_rsx = hypertext::rsx! {
    <div>
        <h1>Shopping List</h1>
        <ul>
            { shopping_list.iter().zip(1..).map(|(&item, i)| hypertext::rsx_move! {
                <li class="item">
                    <input id=format!("item-{i}") type="checkbox">
                    <label for=format!("item-{i}")>{ item }</label>
                </li>
            }).render_all() }
        </ul>
    </div>
}
.render();

Demo: https://vidhan.io/

GitHub: https://github.com/vidhanio/hypertext

[new lib] txt-fmt

txt-fmt是一个用Rust编写的极快的LaTeX格式化工具。

输入:

\documentclass{article}

\begin{document}

\begin{itemize}
\item Lists with items
over multiple lines
\end{itemize}

\begin{equation}
E = m c^2
\end{equation}

\end{document}

输出:

\documentclass{article}

\begin{document}

\begin{itemize}
  \item Lists with items
    over multiple lines
\end{itemize}

\begin{equation}
  E = m c^2
\end{equation}

\end{document}

特性如下:

  • ⚡ 极快的运行时性能
  • 🔧 最小配置要求
  • 📟 命令行界面
  • 📜 处理LaTeX文件类型 .tex, .bib, .cls 和 .sty
  • 🦀 完全采用安全的Rust编写

GitHub: https://github.com/WGUNDERWOOD/tex-fmt

[new] lookbook

lookbook是Dioxus的UI预览框架。

示例:

/// To-Do Task.
#[preview]
pub fn TaskPreview(
    /// Label of the task.
    #[lookbook(default = "Ice skating")]
    label: String,

    /// Content of the task.
    #[lookbook(default = "Central Park")]
    content: String,

    /// List of tags.
    #[lookbook(default = vec![String::from("A")])]
    tags: Json<Vec<String>>,
) -> Element {
    rsx!(
        div {
            h4 { "{label}" }
            p { "{content}" }
            div { { tags.0.iter().map(|tag| rsx!(li { "{tag}" })) } }
        }
    )
}

#[component]
fn app() -> Element {
    rsx!(LookBook {
        home: |()| rsx!("Home"),
        previews: [TaskPreview]
    })
}

fn main() {
    dioxus::launch(app)
}

GitHub: https://github.com/dioxus-community/lookbook

[archive] comfy已存档

Comfy是一个使用Rust构建的有趣的2D游戏引擎。它被设计为有主见、高效以及易于使用。

现已存档,主要原因是,由于现实生活环境的原因,作者没有太多时间/精力用于项目。

放弃Rust用于游戏开发后,Comfy成为了一个小的有趣的副业项目,虽然在一段时间内是有效的,但现在已不再适用,作者没有精力不断赶上Rust生态系统的发展。

GitHub: https://github.com/darthdeus/comfy


From 日报小组 长琴

社区学习交流平台订阅:

评论区

写评论

还没有评论

1 共 0 条评论, 1 页