pub fn add_image(&mut self, image: Handle<Image>) -> egui::TextureId {
        let id = *self.textures.entry(image.clone()).or_insert_with(|| {
            let id = self
                .free_list
                .pop()
                .expect("free list must contain at least 1 element");
            log::debug!("Add a new image (id: {}, handle: {:?})", id, image);
            if self.free_list.is_empty() {
                self.free_list.push(id.checked_add(1).expect("out of ids"));
            }
            id
        });
        egui::TextureId::User(id)
    }
Can accept either a strong or a weak handle.

You may want to pass a weak handle if you control removing texture assets in your
application manually and don't want to bother with cleaning up textures in Egui.
(The cleanup happens in [`free_egui_textures_system`].)

You'll want to pass a strong handle if a texture is used only in Egui and there are no
handle copies stored anywhere else.
src/lib.rs