use std::borrow::Cow; use anyhow::{Context as _, Result}; use gpui::{AssetSource, SharedString}; use rust_embed::RustEmbed; #[derive(RustEmbed)] #[folder = "../../assets"] #[include = "fonts/**/*"] #[exclude = "*.DS_Store"] pub struct Assets; impl AssetSource for Assets { fn load(&self, path: &str) -> Result>> { Self::get(path) .map(|f| f.data) .with_context(|| format!("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()) } }