Как мне реализовать String :: from для моего типа? - PullRequest
0 голосов
/ 06 мая 2019

У меня есть тип Clock:

#[derive(Debug, PartialEq)]
pub struct Clock {
    hours: i32,
    minutes: i32,
}

Для него реализованы некоторые черты.Например:

#[allow(clippy::match_bool)]
impl fmt::Display for Clock {
    fn fmt(&self, formatter: &mut fmt::Formatter) -> fmt::Result {
        let tmp = match (self.hours < 10, self.minutes < 10) {
            (false, false) => ("", self.hours, "", self.minutes),
            (false, true) => ("", self.hours, "0", self.minutes),
            (true, false) => ("0", self.hours, "", self.minutes),
            (true, true) => ("0", self.hours, "0", self.minutes),
        };
        write!(
            formatter,
            "{}",
            format!("{}{}:{}{}", tmp.0, tmp.1, tmp.2, tmp.3)
        )
    }
}

Я хочу реализовать String::from(Clock::new(...)).Как я могу это сделать?

Я пытался:

impl convert::From<Clock> for String {
    fn from(clock: Clock) -> String {
        clock.to_string()
    }
}

1 Ответ

0 голосов
/ 06 мая 2019

Рабочий раствор:

impl From<Clock> for String {
    fn from(clock: Clock) -> String {
        clock.to_string()
    }
}

impl fmt::Display for Clock {
    fn fmt(&self, formatter: &mut fmt::Formatter) -> fmt::Result {
        write!(
            formatter,
            "{}",
            format!("{:02}:{:02}", self.hours, self.minutes)
        )
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...