use anyhow::Context; use gpui::{AssetSource, Result, SharedString}; use rust_embed::RustEmbed; #[derive(RustEmbed)] #[folder = "../../assets"] #[include = "fonts/**/*"] #[include = "brand/**/*"] #[include = "icons/**/*"] #[exclude = "*.DS_Store"] pub struct Assets; impl AssetSource for Assets { fn load(&self, path: &str) -> Result>> { Self::get(path) .map(|f| Some(f.data)) .with_context(|| format!("loading asset at path {path:?}")) } fn list(&self, path: &str) -> Result> { Ok(Self::iter() .filter_map(|p| { if p.starts_with(path) { Some(p.into()) } else { None } }) .collect()) } }