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: events.rs
    path of file: ./repos/Ambient/crates/world_audio/src
    
    the code of the file until where you have to start completion: use ambient_core::asset_cache;
use ambient_ecs::{EntityId, World};

use crate::{play_sound_on_entity, AudioNode, AudioSeed};
#[derive(serde::Serialize, serde::Deserialize, Debug, Clone)]
/// Plays a sound on an entity. Requires that the entity has an AudioEmitterDef on the server.
/// Otherwise, the audio is played on a temporary emitter
pub struct PlayLocalSound {
    pub i
    
pub fn play_local_sound(world: &mut World, event: PlayLocalSound) -> anyhow::Result<()> {
    let assets = world.resource(asset_cache());
    let source = match event.source.try_build(assets, event.seed).transpose() {
        Some(source) => source?,
        None => {
            tracing::warn!("Sound {} is not yet loaded", event.label);
            return Ok(());
        }
    };

    play_sound_on_entity(world, event.id, source)?;
    Ok(())
}