gpt4 book ai didi

rust - 如何在泛型中指定迭代器类型?

转载 作者:行者123 更新时间:2023-11-29 08:19:50 25 4
gpt4 key购买 nike

本题基于this code from the url crate .

extend方法接收元组上的迭代器,其对象可以借用为 &str。 .

fn extend<I, K, V>(iter: I)
where
I: IntoIterator,
I::Item: Borrow<(K, V)>,
K: AsRef<str>,
V: AsRef<str>
{
{
for key in iter {
let (ref k, ref v) = key.borrow();
append(k.as_ref(), v.as_ref());
}
}
}

Full example .

我想要 extend处理 (&str, Option<&str>) 上迭代器的方法元组。我尝试了不同的变体,例如:

fn extend<I, K, V>(iter: I)
where
I: IntoIterator,
I::Item: Borrow<(K, Option<V>)>,
K: AsRef<str>,
V: AsRef<str>

但我不明白它是如何工作的。

我如何向编译器解释我想要什么?

最佳答案

元组中不需要引用:

Playground

fn extend<I, K, V>(iter: I)
where
I: IntoIterator,
I::Item: Borrow<(K, V)>,
K: AsRef<str>,
V: AsRef<str>,
{
for key in iter {
let (k, v) = key.borrow();
append(k.as_ref(), v.as_ref());
}
}

fn extend2<I, K, V>(iter: I)
where
I: IntoIterator<Item = (K, Option<V>)>,
K: AsRef<str>,
V: AsRef<str>,
{
for (k, v) in iter {
append3(k, v);
}
}

关于rust - 如何在泛型中指定迭代器类型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57980856/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com