#web-framework #erb #rails-inspired #rust

hust-macro

一种将Rust嵌入HTML代码并在所需位置使用它的方法

1个不稳定版本

0.1.0 2024年1月18日

471#web-framework

MIT 许可证

5KB

Hust

Hust 是一种将Rust嵌入HTML的首选方式。

此包

此包用于在项目中使用hust。

使用方法

使用类似以下格式的.hust文件

let result = include_hust!("test.hust");

想象一下你的文件看起来像这样

<h1>Hello, World!</h1>
<p>Hello from Hust!</p>
<%= variable_name %>

该文件将被转换为如下所示的Rust代码,这些代码将插入宏运行的位置。

let output_buffer = String::new();
output_buffer.push_str("<h1>Hello, World!</h1>\n\r<p>Hello from Hust!</p>\n\r");
output_buffer.push_str(variable_name);
output_buffer

然后,这段代码将直接内联在调用宏的地方。

示例Hust

<h1>User</h1>
<div class="user">
  <%= &user.username %>
</div>

或者,对于更复杂的用法

<h1>All Users</h1>
<div class="py-2">
  <%= &users.len().to_string() %> users found.
</div>
<% for user in users { %>
  <div class="user">
    <a href="/users/<%= &user.id.to_string() %>">
    <%= &user.username %>
    </a>
  </div>
<% } %>

<a href="/users/new" class="btn btn-primary">New User</a>

缺点/不足

目前,无法进行调试。由于Rust当前宏的工作方式,任何Hust代码中的错误都将显示在include_hust!处,而不是在导致错误的文件行上。我们正在考虑在未来改进这一点。

依赖关系

~1.5MB
~36K SLoC