通用结构的过滤向量

问题描述 投票:0回答:1

因 openai 集成而删除

rust
1个回答
1
投票

如果您定义了一个特质

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 上查看整个代码

© www.soinside.com 2019 - 2024. All rights reserved.