微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何为我的结构实现 FromIterator 特征?

如何解决如何为我的结构实现 FromIterator 特征?

use itertools::Itertools;

struct Runner {
    h: u8,m: u8,s: u8,}

impl Runner {
    fn from(v: (u8,u8,u8)) -> Runner {
        Runner {
            h: v.0,m: v.1,s: v.2,}
    }
}

fn string_to_vec(strg: &str) -> Vec<Runner> {
    strg.split(",")
        .map(|personal_result| personal_result.split('|'))
        .flatten()
        .map(|x| x.parse::<u8>().unwrap())
        .tuples::<(_,_,_)>()
        .collect::<Vec<Runner>>()
} 
    
fn stati(strg: &str) -> String {
    let run_vec = string_to_vec(strg);
}

所以我试图将元组收集到我的结构的 Vec 中。不知道该怎么做 https://www.codewars.com/kata/55b3425df71c1201a800009c/train/rust

解决方法

你的 from() 函数不会被魔法调用,即使你实现了 trait From,你也需要显式调用它:

use itertools::Itertools;

struct Runner {
    h: u8,m: u8,s: u8,}

impl From<(u8,u8,u8)> for Runner {
    fn from(v: (u8,u8)) -> Runner {
        Runner {
            h: v.0,m: v.1,s: v.2,}
    }
}

fn parse_runner(strg: &str) -> Vec<Runner> {
    strg.split(",")
        .flat_map(|personal_result| personal_result.split('|'))
        .map(|x| x.parse::<u8>().unwrap())
        .tuples::<(_,_,_)>()
        .map(From::from)
        .collect::<Vec<Runner>>()
}

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。