Implement Display for Position

This commit is contained in:
kageru 2020-06-21 22:52:23 +02:00
parent b415ebb509
commit 324648d9a7
Signed by: kageru
GPG Key ID: 8282A2BEA4ADA3D2

View File

@ -1,7 +1,7 @@
use chrono::prelude::*; use chrono::prelude::*;
use helpers::*; use helpers::*;
use serde::Deserialize; use serde::Deserialize;
use std::time::Duration; use std::{fmt, time::Duration};
/// All information about a track. This is returned by the `currentsong` or `queue` commands. /// All information about a track. This is returned by the `currentsong` or `queue` commands.
#[derive(Deserialize, Clone, Debug, Default, PartialEq)] #[derive(Deserialize, Clone, Debug, Default, PartialEq)]
@ -57,6 +57,15 @@ pub struct Position {
pub total_items: Option<u16>, pub total_items: Option<u16>,
} }
impl fmt::Display for Position {
fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
match self.total_items {
Some(n) => write!(f, "{}/{}", self.item_position, n),
None => write!(f, "{}", self.item_position),
}
}
}
/// Current status as returned by `status`. /// Current status as returned by `status`.
/// ///
/// Regarding optional `volume`: /// Regarding optional `volume`: