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: main.rs
    path of file: ./repos/CallOfFerris/src
    
    the code of the file until where you have to start completion: //! # Call of Ferris
//!
//! Call of Ferris is a thrilling action game where your favorite Ferris the crab and the rust mascot got guns and has taken up the duty to find evildoer languages while managing to keep itself alive.
//! Take part in this awesome adventure and help Ferris be the best ever!
//!
//! For a fuller outline, see the project's [README.md](https://github.com/Andy-Python-Programmer/CallOfFerris)

use std::{fs, rc::Rc, sync::Mutex};

use 
    
fn init_assets(ctx: &mut Context) -> FerrisResult<AssetManager> {
    let mut asset_manager = AssetManager::new();

    let images_dir = fs::read_dir("./resources/images/")?;
    let fonts_dir = fs::read_dir("./resources/fonts/")?;
    let audio_dir = fs::read_dir("./resources/audio/")?;
    let maps_dir = fs::read_dir("./resources/maps/")?;

    for image in images_dir {
        asset_manager.load_image(ctx, image?.file_name().to_string_lossy());
    }

    for font in fonts_dir {
        asset_manager.load_font(ctx, font?.file_name().to_string_lossy());
    }

    for audio in audio_dir {
        asset_manager.load_sound(ctx, audio?.file_name().to_string_lossy());
    }

    for map in maps_dir {
        asset_manager.load_file(ctx, "maps", map?.file_name().to_string_lossy());
    }

    Ok(asset_manager)
}