如何将动态格式字符串与格式一起使用!宏?

2024-05-11

我想使用format!宏与String作为第一个参数,但因为宏需要字符串文字,所以我无法传递任何与它不同的内容。

我想这样做是为了将字符串动态添加到当前字符串中,以便在视图引擎中使用。如果有更好的方法,我愿意接受建议。

let test = String::from("Test: {}");
let test2 = String::from("Not working!");
println!(test, test2);

我真正想要实现的是下面的示例,其中 main.html 包含{content}.

use std::io::prelude::*;
use std::fs::File;
use std::io;

fn main() {
    let mut buffer = String::new();
    read_from_file_using_try(&mut buffer);

    println!(&buffer, content="content");
}

fn read_from_file_using_try(buffer: &mut String) -> Result<(), io::Error> {
    let mut file = try!(File::open("main.html"));
    try!(file.read_to_string(buffer));
    Ok(())
}

所以我想在格式化后打印 main.html 的内容。


简短的回答:这是不可能的。


长答案:format!宏(及其派生物)需要一个字符串文字,即编译时已知的字符串。为了满足此要求,如果提供的参数与格式不匹配,则会引发编译错误。


您正在寻找的东西被称为模板引擎。 Rust 模板引擎的非详尽列表(排名不分先后):

  • 车把 https://github.com/sunng87/handlebars-rust
  • Rustache https://github.com/rustache/rustache
  • Maud https://github.com/lambda-fairy/maud
  • 恐怖表演 https://github.com/Stebalien/horrorshow-rs
  • 格式宏 https://github.com/krdln/fomat-macros
  • ...

模板引擎具有不同的特征,并且在编译时或运行时发生的验证程度及其灵活性方面显着不同(例如,我似乎记得 Maud 非常以 HTML 为中心)。您可以根据自己的使用情况找到最适合的一种。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何将动态格式字符串与格式一起使用!宏? 的相关文章

  • java String.format 中的转义格式化字符

    这个问题几乎与这个 Net 问题 https stackoverflow com questions 91362 how to escape brackets in a format string in net除了java 你如何逃脱 1
  • Google 地图查询返回的 JSON 包含像 \x26 这样的编码字符(如何解码?)

    在 Java 应用程序中 我获取 JSON 来自 Google 地图 其中包含以下字符 x26我想将其转换为其原始字符 据我所知 这是一个 UTF 8 表示法 但我不完全确定 在源 JSON 中 可能会出现各种编码字符 例如 x3c div
  • python 中分割字符串以获得一个值?

    需要帮助 假设我在名为 input 的变量中有一个字符串 Sam Person name kind input split 通过执行上述操作 我得到两个具有不同字符串 Sam 和 Person 的变量 有没有办法只获取第一个值 name S
  • Java替换特定字符

    这是我在这个网站上的第一个问题 所以我会尽量不要成为一个十足的菜鸟 我目前正在用java 创建刽子手游戏 所以我问你的问题是我们是否被赋予了 幽灵 这个词 并将 Ghost 替换为 hiddenWord ghost length for i
  • VacantEntry 未在名为 set 的范围内实现任何方法

    这段代码 use std collections hash map Entry Occupied Vacant use std collections HashMap fn main let mut vars HashMap
  • 如何连接字符串和常量字符?

    我需要将 hello world 放入c中 我怎样才能做到这一点 string a hello const char b world const char C string a hello const char b world a b co
  • Java 中的正则表达式,\\s 与 \\s+

    下面两个表达式有什么区别 x x replaceAll s x x replaceAll s 第一个匹配单个空格 而第二个匹配一个或多个空格 它们是所谓的正则表达式量词 它们执行像这样的匹配 取自文档 http docs oracle co
  • 解析格式化字符串

    我正在尝试创建一个通用格式化程序 解析器组合 示例场景 我有一个 string Format 的字符串 例如var format 0 1 我有一个用于输入的对象 字符串 数组 例如var arr new asdf qwer 我正在使用格式字
  • 在 Golang 中生成固定长度的随机十六进制字符串的有效方法?

    我需要生成很多固定长度的随机十六进制字符串 我找到这个解决方案golang中如何生成固定长度的随机字符串 https stackoverflow com a 31832326 710955 我正在做这样的事情 const letterByt
  • string.IsNullOrEmpty() 与 string.NotNullOrEmpty()

    我很好奇是否有开发人员更频繁地使用 string IsNullOrEmpty 来表示负数而不是正数 e g if string IsNullOrEmpty 我99 的时间都是这样使用这个方法的 对此的设计决定是什么 因为 IsNullOrE
  • clap::App 多次调用方法移动所有权

    即使阅读了有关引用所有权和借用的章节后 我仍然无法理解以下代码中的某些内容 这有效地阻止了我从clap App extern crate clap use clap App fn main let mut app App new name
  • 如何获取在 Rust 中实现特定特征的类型列表?

    我想知道一个实现的结构std io Write 在某些文件中有描述吗 当你查找API for std https doc rust lang org std 您可以在那里搜索您的特质 例如std io Write https doc rus
  • 如何固定板条箱的间接依赖关系?

    我的项目 A 依赖于库 B 而库 B 又依赖于库 C 库 B 将依赖版本设置为 任何 所以 Cargo 将下载最新版本的 C 我如何指示 Cargo 使用特定版本的库 C 构建库 B 我正在尝试建立iron https github com
  • 为什么 MutexGuard 在结构中需要生命周期参数,但在函数返回类型中不需要? [复制]

    这个问题在这里已经有答案了 我想搬一个MutexGuard大约 返回一个MutexGuard来自函数无需给出生命周期参数即可正常工作 但是 当将防护打包到结构中时 编译器需要防护的生命周期参数 下面的代码编译没有错误 struct Queu
  • 正则表达式排除双空格

    我正在寻找 c asp net 3 5 的正则表达式 如果句子或单词组中存在任何双空格 该正则表达式将会失败 the cat chased the dog true the cat chased the dog false doubles
  • 如何限制Cargo.toml中的测试线程数?

    我的测试共享公共资源并且无法同时执行 这些测试失败cargo test 但与RUST TEST THREADS 1 cargo test 我可以修改测试以等待全局互斥体 但如果有任何更简单的方法来强制 我不想让它们混乱cargo为我设置这个
  • 从字符串中删除重音符号

    最近我在 StringUtils 库中发现了非常有用的方法 即 StringUtils stripAccents String s 我发现它对于删除任何特殊字符并将其转换为某些 ASCII 等效字符 确实很有帮助 例如 c 等 现在我正在为
  • 将 VBA 字符串转换为双精度

    我正在使用非常基本的 VBA for word 编码来创建一个模板 该模板可以从 Windows 中的其他屏幕中提取数据 当它提取数字时 它们被格式化为字符串 我现在需要将字符串转换为双精度 以便对它们进行加 减 我一直在尝试一切 但似乎无
  • 如何在 Java 中读取/转换 InputStream 为字符串?

    如果你有一个java io InputStream对象 您应该如何处理该对象并生成一个String 假设我有一个InputStream包含文本数据 我想将其转换为String 例如我可以将其写入日志文件 最简单的方法是什么InputStre
  • 如何从特征对象中获取 Any:downcast_ref 的所有权?

    我遇到了与 Rust 的所有权规则和特质对象向下兼容的冲突 这是一个示例 use std any Any trait Node fn gen self gt Box

随机推荐

  • 将 Angular 项目从 StackBlitz 导出到本地

    我想导出在 StackBlitz 中完成的 Angular 项目 并使用以下命令从 Angular CLI 执行它ng serve就像我们对在本地计算机中创建的 Angular 项目所做的那样 去做就对了 这是您需要点击的地方
  • 清理 IntelliJ 中构建的 Play 框架

    我有一个拼写错误conf routes文件导致 Play Framework 生成错误命名的类 重建项目并运行Invalidate Caches并没有解决 IntelliJ 中的问题 当我手动运行时重新生成了不正确的类文件play clea
  • 字符串排序真的是 O(n^2logn) 吗? [复制]

    这个问题在这里已经有答案了 我读了以下内容 排序需要 O NlogN 那么它怎么是 O N 2logN 我们在这里想念的是 两个字符串的比较不是 O 1 在最坏的情况下 需要 在 所以最终的复杂度是O N 2logN 它是否正确 我一直认为
  • CSS 列数导致项目拆分列

    尝试不使用 jQuery 脚本来实现砖石效果 因此寻找 CSS 替代方案 我正在尝试使用列计数 这似乎有效 但不符合预期 因此 列就在那里 但有时容器中的项目会被拆分为多个列 正如您应该在此示例中看到的那样 http jsfiddle ne
  • AWS 从实例元数据检索安全凭证

    这不是问题的重复使用 API 调用获取我的 AWS 凭证 https stackoverflow com q 34810642 850848 因为我具体询问亚马逊在他们给出的示例中的含义 我正在看这里 http docs aws amazo
  • WiX - 安装 Windows 服务以在 x64 模式下运行

    我正在使用 WiX 3 5 及其 ServiceInstall 标签安装 Windows 服务
  • 警告:格式“%d”需要类型“int *”,但参数 2 的类型为“int”

    所以我是 C 的新手 并且对这个警告发生的情况遇到了麻烦 该警告是什么意思以及我该如何解决它 我写的代码在这里 void main void char name int age 0 printf input your name n scan
  • Java SWT 用户输入验证

    在 SWT 中进行用户输入验证时 Java 约定是什么 我读到有 FieldEditors 它们是非常方便的字段 但遗憾的是仅适用于首选项和对话框 我还了解到有一个 IValidator 接口 但它经常与数据绑定一起使用 就我而言 我的大多
  • Android - 在通知栏中使用外部个人资料图像,如 Facebook

    我知道您可以在推送通知参数中发送信息 例如消息 标题 图像 URL 等 Facebook 如何在通知区域中显示您的个人资料图片和消息 我想在通知区域中使用外部图像 因此当您将其下拉时 您会看到带有消息的个人资料图像 现在 我的仅显示可绘制文
  • 为什么 Azure Key Vault 安全?

    Azure Key Vault 为什么或如何安全 我需要在服务器上存储密钥 URI 客户端 ID 和客户端密钥 因此如果任何人授予对托管应用程序的服务器的访问权限 他将能够访问存储在 Key Vault 中的密钥和密钥 这意味着将它们存储在
  • Cloud Functions for Firebase 中的套接字挂起错误

    我有一个由 Pub Sub 事件触发的云函数 它用请求 承诺 https github com request request promise从我用于数据的 API 发出多个 GET 请求 它在 Cloud Functions Emulat
  • 如何将 BOOST_FOREACH 与两个 std::map 一起使用?

    我的代码基本上如下所示 std map
  • 导入 IronPython 的嵌入式库

    我已通过 NuGet 将 IronPython 标准库添加到我的 c net4 项目中 后来获得了一些参考资料 IronPython IronPython Modules IronPython SQLite IronPython Wpf M
  • 为什么有些网站在 iPad 上无法缩放?

    有谁知道为什么 iPad 缩放 你知道 你用两根手指放大文本 屏幕 在某些网站上不起作用 例如 脸书网 c3 arc nasa gov nex 我正在工作的网站 谷歌搜索没有显示任何内容 这让我认为这不是一个常见问题 预先感谢您的任何见解
  • 如何在Android Studio中安装android 6.0.1模拟器?

    我在我的 Android 模拟器上遇到这个问题E Surface getSlotFromBufferLocked 未知缓冲区 0xab7519c0 https stackoverflow com questions 33046375 e s
  • 将文本中的所有 URL 替换为 PHP 中的可点击链接[重复]

    这个问题在这里已经有答案了 我有一个用 PHP 编写的 Web 应用程序 我想找到用户评论中的所有 URL 并将它们更改为可点击的链接 我搜索了很多网站和页面 找到了以下解决方案 不幸的是我没有再次找到它的参考链接 感谢其作者 该代码可以完
  • 本机反应:“order”不是有效的样式属性

    顺序是 Flex 中一个有用的属性 我在互联网上搜索这个 概括 CSS order 属性指定用于在 Flex 容器中布置 Flex 项目的顺序 元素按顺序值的升序排列 具有相同 order 值的元素按照它们在源代码中出现的顺序排列
  • Angular cli - 在“deployUrl”选项被弃用后在 webpack 中设置“publicPath”

    我希望在这里得到更多答案 开放问题角度 cli https github com angular angular cli issues 22113以及 从角度 13 开始 它说deployUrl正在被弃用 在我们的项目中 我们定义deplo
  • 使用 C# 截取任何外部应用程序的屏幕截图

    我们有一个 C WPF 应用程序 我们想要在其中截取我们启动的任意应用程序的屏幕截图 即 我们可以引用我们启动的进程 应用程序可能已最小化或位于其他窗口后面 但我们仍然只需要单个应用程序的图像 而不是重叠像素 我知道使用 BitBlt 或的
  • 如何将动态格式字符串与格式一起使用!宏?

    我想使用format 宏与String作为第一个参数 但因为宏需要字符串文字 所以我无法传递任何与它不同的内容 我想这样做是为了将字符串动态添加到当前字符串中 以便在视图引擎中使用 如果有更好的方法 我愿意接受建议 let test Str