从 Zotero 项目中获取标题

get title from Zotero item

对 Rust 还是很陌生,试图了解如何使用 Zotero crate.

提取 JournalArticletitle

我知道了,可以确认物品已成功取回:

let zc = ZoteroCredentials::new();
let z = ZoteroInit::set_user(&zc.api_id, &zc.api_key);
let item = z.get_item(item_id, None).unwrap();

从这里,我看到 item.dataItemType,特别是 JournalArticleData。但我基本上不太了解如何 a) 将其序列化为 JSON,或 b) 将 .title 作为 属性.

访问

对于上下文,这将是 Rocket GET 路线的结果。

如有任何帮助,我们将不胜感激!

听起来您缺少的部分是如何对枚举使用模式匹配。我不熟悉 zotero 所以这一切都基于文档,详细的类型注释明确说明我认为我在做什么:

use zotero::data_structure::item::{Item, ItemType, JournalArticleData};

let item: Item = z.get_item(item_id, None).unwrap();

// Now we must extract the JournalArticle from the ItemType, which is an enum
// and therefore requires pattern matching.
let article: JournalArticleData = match item.data {
    ItemType::JournalArticle(a) => a,
    something_else => todo!("handle wrong type of item"),
}

let title: String = article.title;

match 也可以写成 if let。)

您还可以使用模式匹配遍历整个结构,而不仅仅是需要它的枚举:

match z.get_item(item_id, None).unwrap() {
    Item {
        data: ItemType::JournalArticle(JournalArticleData {
            title,
            ..
        }),
        ..
    } => {
        // Use the `title` variable here
    },
    something_else => todo!("handle wrong type of item"),
}