- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个 TOML 文档,其中某些键可能存在也可能不存在。例如。该文件是有效文件:
foo = "bar"
但这也是有效的:
foo = "bar"
something = "else"
我现在正尝试使用库 toml-rs 在 Rust 中解析此文档.但是,我在文档中找不到任何关于如何查明 key 是否实际存在于我的 TOML 文档中的指导。每当我尝试访问此键时,程序都会出现错误 index not found
。
我提出了以下简约示例,它表明当我尝试访问不存在的 key 时 Rust 代码立即失败:
use toml::Value;
fn main() {
let value = "foo = 'bar'".parse::<Value>().unwrap();
println!("{:?}", value["foo"]);
println!("{}", "before");
println!("{:?}", value["foo2"]);
println!("{}", "after");
}
这导致输出:
String("bar")
before
thread 'main' panicked at 'index not found', src/libcore/option.rs:1034:5
note: run with `RUST_BACKTRACE=1` environment variable to display a backtrace.
在库的实际代码中我找到了a comment for a function called get
指出:
Also returns
None
if the given key does not exist in the map or the given index is not within the bounds of the array.
但是,我不确定这是否也适用于我的 key 访问。至少在我的测试中它没有。我也无法在代码中找到检查 key 是否存在的函数。
我想一定有什么方法可以查明 TOML 文档中是否存在某个键?
最佳答案
get()
而你正在做的是进入图书馆的两条完全不同的路径。此按键访问是 an implementation of Index<_>
如果 key 不存在,会 panic 。
这就是您在代码中看到的。
做你想做的事情的真正方法确实是使用get()
,这将返回一个 Option
,但首先,我们要解决 toml
的情况。你喂的不是一张 table ,像这样:
use toml::{Value};
use toml::map::Map;
fn main() {
let value = "foo = 'bar'".parse::<Value>().ok().and_then(|r| match r {
Value::Table(table) => Some(table),
_ => None
}).unwrap_or(Map::new()); // This now contains a HashMap<String, Value>
println!("{:?}", value.get("foo"));
println!("{}", "before");
println!("{:?}", value.get("foo2"));
println!("{}", "after");
}
关于rust - 如何使用 toml-rs 检查 TOML 中是否存在 key ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57946845/
我有一个 TOML 文档,其中某些键可能存在也可能不存在。例如。该文件是有效文件: foo = "bar" 但这也是有效的: foo = "bar" something = "else" 我现在正尝试
我正在使用 Dynaconf (3.1.2) 来处理我的 python 应用程序设置。 如果我在 settings.toml 和 .secrets.toml 中使用相同的 key ,则这些部分最后仅包
我正在使用 Dynaconf (3.1.2) 来处理我的 python 应用程序设置。 如果我在 settings.toml 和 .secrets.toml 中使用相同的 key ,则这些部分最后仅包
TOML said“TOML和YAML都强调人类的可读性,例如使人们更容易理解给定行目的的注释。TOML的不同之处在于将它们组合在一起,允许注释(与JSON不同),但保留了简单性(与YAML不同)。”
我正在尝试为 TOML 文档实现可链接的查询执行。 A Query是更改 TOML 文档并可能返回另一个 Query 的东西应在其自身之后执行的对象。 Query执行的获取前一个查询的结果(如果有的话
看着 toml repo ,我没有看到任何关于键命名约定的限制/建议 看起来大部分变量都是 lowercase但想知道 key 的最佳实践 - 命名约定是什么? 假设我想要一个名为 firstname
我想从 TOML 文件生成 JSON。 JSON 结构应该是这样的,在对象数组中包含对象数组: { "things": [ { "a": "thing1
背景 我正要尝试从GitHub下载的Python包,发现它没有setup.py ,所以我无法安装它 pip install -e 相反,该软件包具有 pyproject.toml 文件似乎具有与 s
获取以下 TOML 数据: [[items]] foo = 10 bar = 100 [[items]] foo = 12 bar = 144 还有下面的 rust 代码: use serde_der
“WSO IS 5.9.0”的新功能是 deployment.toml ,但我还没有找到配置选项,也没有找到如何从这个文件设置 xml 配置文件的方法。 例如,如果我想在 carbon.xml 中启用
“WSO IS 5.9.0”的新功能是 deployment.toml ,但我还没有找到配置选项,也没有找到如何从这个文件设置 xml 配置文件的方法。 例如,如果我想在 carbon.xml 中启用
从 toml 文件中读取的字符串值包含额外的引号: # Toml file string_key = "fdsafdsafdsfds" 代码: let cfg_file_content = g
我正在尝试读取 TOML 文件以创建一个结构,该结构包含具有关联值的枚举向量。这是示例代码: extern crate serde; #[macro_use] extern crate serde_d
我有共享公共(public)资源且无法同时执行的测试。这些测试因 cargo test 而失败,但适用于 RUST_TEST_THREADS=1 cargo test。 我可以修改测试以等待全局互斥锁
我使用以下方式安装了依赖项: go get github.com/BurntSushi/toml 我在与 main.go 相同的文件夹中创建了一个 toml 文件: . |-- cloud.toml
我有一个包含两个可执行文件的 Rust 项目: src └── bin ├── app.rs └── tool.rs tool 程序作为app 的子进程运行。 (需要进行分离,因为 t
背景 我目前正在编写一个绑定(bind) C 库的 crate ,我需要用户指定构建库的位置。以前,我见过 llvm-sys 的句柄crate 使用环境变量。但是,如果我经常使用它,每次我想运行一个项
所以我在 GitHub 存储库中有几个文件,我想设置一个自定义的 404 错误页面。当我搜索它时,它要求我在 netlify.toml 中插入一些东西。文件,它应该在我的根目录中(我认为这意味着存储库
Pip 支持 pyproject.toml文件,但到目前为止,新模式的所有实际使用都需要一个 3rd 方工具来自动生成这些文件(例如,诗歌和 pip)。不像 setup.py这已经是人类可写的,pyp
我希望有这样的东西:cargo install stopwatch 但在文档中找不到它。 查找包版本并手动将包添加到.toml: [dependencies] stopwatch="0.0.6" 感觉
我是一名优秀的程序员,十分优秀!