0

我正在查看此页面上的官方 Diesel 文档:https ://docs.diesel.rs/diesel/expression_methods/trait.PgArrayExpressionMethods.html#example 。该示例使用变量tags,但我看不到它的定义位置。我应该如何理解这个代码片段?

let cool_posts = posts.select(id)
    .filter(tags.contains(vec!["cool"]))
    .load::<i32>(&conn)?;
assert_eq!(vec![1], cool_posts);

let amazing_posts = posts.select(id)
    .filter(tags.contains(vec!["cool", "amazing"]))
    .load::<i32>(&conn)?;

tags变量从何而来?

4

1 回答 1

1

Rust 文档中的示例可以使用#. 这通常是为了减少重复样板的噪音,比如main函数和导入。

如果您查看该特征的源代码,您可以看到完整的代码包含:

/// # table! {
/// #     posts {
/// #         id -> Integer,
/// #         tags -> Array<VarChar>,
/// #     }
/// # }

以开头的行#不会在文档中呈现,但在运行文档测试时仍会编译。

据推测,在 Diesel 示例的上下文中,这很常见,或者可能被认为足够“明显”,以至于作者认为没有它的示例会更清晰。这可能是一个见仁见智的问题,并不是每个人都会同意。

于 2021-09-11T11:10:28.507 回答