Skip to content

Ideas for caching StaticSoundData #155

@isokissa

Description

@isokissa

(I am new to Rust, sorry if question is stupid)

In my application (bevy, but not relevant for this problem), I am trying to load all short sounds into memory, so that it can be available immediately when needed. I have some sort of sound_cache:

pub cached_sounds: HashMap<String, StaticSoundData>;

... 

if let Some(sound_data) = cached_sounds.get(&self.asset) {
    let _handle = kira_manager.play(sound_data.clone()); // TODO can we ever play a song without cloning from cache?
} else {
    tracing::info!("SFX asset not found in cache: {}", self.asset);
}

It seems that the only way to pass the StaticSoundData to play function is to clone it, which feels stupid: we have he whole song data in memory, it's immutable and why on earth we need to make a copy of it every time we want to play it. Song data can be really long.

Question: what would be the most efficient, most normal, most idiomatic way to cache the sounds in memory with Kira.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions