use std::borrow::Cow; use anyhow::{anyhow, Result}; use gpui::{AssetSource, SharedString}; use rust_embed::RustEmbed; #[derive(RustEmbed)] #[folder = "../../assets"] #[include = "fonts/**/*"] #[include = "icons/**/*"] #[include = "images/**/*"] #[include = "themes/**/*"] #[include = "sounds/**/*"] #[include = "*.md"] #[exclude = "*.DS_Store"] pub struct Assets; impl AssetSource for Assets { fn load(&self, path: &str) -> Result>> { Self::get(path) .map(|f| f.data) .ok_or_else(|| anyhow!("could not find asset at path \"{}\"", path)) .map(Some) } fn list(&self, path: &str) -> Result> { Ok(Self::iter() .filter(|p| p.starts_with(path)) .map(SharedString::from) .collect()) } }