因 openai 集成而删除
如果您定义了一个特质
Named
您的 Cat
将实现,那么它就会起作用。这个特征包含 name()
方法,从而解决你的问题。
以下是要应用的主要更改:
// …
pub trait Named {
fn name(&self) -> &str;
}
impl<T> Repository<T> where T: Named {
// …
// this method returns an error
pub fn find_by(self, name: &str) -> Vec<T> {
self.store.into_iter().filter(|e| e.name() == name).collect()
}
// …
#[cfg(test)]
mod tests {
// …
impl Named for Cat {
fn name(&self) -> &str {
&self.name
}
}
在 Rust Playground 上查看整个代码。