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: mod.rs
    path of file: ./repos/veloren/voxygen/src/session
    
    the code of the file until where you have to start completion: pub mod interactable;
pub mod settings_change;
mod target;

use std::{cell::RefCell, collections::HashSet, rc::Rc, result::Result, time::Duration};

#[cfg(not(target_os = "macos"))]
use mumble_link::SharedLink;
use ordered_float::OrderedFloat;
use specs::{Join, LendJoin, WorldExt};
use tracing::{error, info};
use vek::*;

use client::{self, Client};
use common::{
    comp::{
        self,
        dialogue::Subject,
        inventory::slot::{EquipSlot, Slot},
        invite::InviteKind,
        item::{tool::ToolKind, ItemDesc},
        CharacterActivity, ChatType, Content, Fluid, InputKind, InventoryUpdateEvent, Pos,
        PresenceKind, Stats, UtteranceKind, Vel,
    },
    consts::MAX_MOUNT_RANGE,
    event::UpdateCharacterMetadata,
    link::Is,
    mounting::{Mount, VolumePos},
    outcome::Outcome,
    recipe,
    terrain::{Block, BlockKind},
    trade::TradeResult,
    util::{Dir, Plane},
    vol::ReadVol,
    CachedSpatialGrid,
};
use common_base::{prof_span, span};
use common_net::{msg::server::InviteAnswer, sync::WorldSyncExt};

use crate::{
    audio::sfx::SfxEvent,
    cmd::run_command,
    error::Error,
    game_
    
    pub fn cleanup(&mut self) { self.client.borrow_mut().cleanup(); }

    fn should_auto_zoom_lock(&self) -> bool {
        let inputs_state = &self.inputs_state;
        for input in inputs_state {
            match input {
                GameInput::Primary
                | GameInput::Secondary
                | GameInput::Block
                | GameInput::MoveForward
                | GameInput::MoveLeft
                | GameInput::MoveRight
                | GameInput::MoveBack
                | GameInput::Jump
                | GameInput::Roll
                | GameInput::Sneak
                | GameInput::AutoWalk
                | GameInput::Climb
                | GameInput::ClimbDown
                | GameInput::SwimUp
                | GameInput::SwimDown
                | GameInput::SwapLoadout
                | GameInput::ToggleWield
                | GameInput::Slot1
                | GameInput::Slot2
                | GameInput::Slot3
                | GameInput::Slot4
                | GameInput::Slot5
                | GameInput::Slot6
                | GameInput::Slot7
                | GameInput::Slot8
                | GameInput::Slot9
                | GameInput::Slot10
                | GameInput::SpectateViewpoint
                | GameInput::SpectateSpeedBoost => return true,
                _ => (),
            }
        }
        false
    }
}