You are an expert in writing code in many different languages. Your goal is to perform code completion for the following code, keeping in mind the rest of the code and the file meta data.
    Metadata details:
    filename: player.rs
    path of file: ./repos/spotify-player/spotify_player/src/state
    
    the code of the file until where you have to start completion: use super::model::*;

/// Player state
#[derive(Default, Debug)]
pub struct PlayerState {
    pub devices: Vec<Device>,

    pub playback: Option<rspotify_model::CurrentPlaybackContext>,
    pub playback_last_updated_time: Option<std::time::Instant>,
    /// a buffered state to speedup the feedback of playback metadata update to user
    // Related issue: https://github.com/aome510/spotify-player/issues/109
    pub buffered_playback: Option<SimplifiedPlayback>,

    pub queue: Option<rspotify_model::CurrentUserQueue>,
}

impl PlayerState {
    /// gets the current playback
    ///
    /// # Note
    /// Because playback data stored inside the player state is buffered and cached,
    /// the returned playback is estimated based on the available data.
    pub fn current_playback(&self) -> Option<rspotify_model::CurrentPlaybackContext> {
 
    
    pub fn playing_context_id(&self) -> Option<ContextId> {
        match self.playback {
            Some(ref playback) => match playback.context {
                Some(ref context) => {
                    let uri = crate::utils::parse_uri(&context.uri);
                    match context._type {
                        rspotify_model::Type::Playlist => Some(ContextId::Playlist(
                            PlaylistId::from_uri(&uri).ok()?.into_static(),
                        )),
                        rspotify_model::Type::Album => Some(ContextId::Album(
                            AlbumId::from_uri(&uri).ok()?.into_static(),
                        )),
                        rspotify_model::Type::Artist => Some(ContextId::Artist(
                            ArtistId::from_uri(&uri).ok()?.into_static(),
                        )),
                        _ => None,
                    }
                }
                None => None,
            },
            None => None,
        }
    }