
# Objective - Remove `derive_more`'s error derivation and replace it with `thiserror` ## Solution - Added `derive_more`'s `error` feature to `deny.toml` to prevent it sneaking back in. - Reverted to `thiserror` error derivation ## Notes Merge conflicts were too numerous to revert the individual changes, so this reversion was done manually. Please scrutinise carefully during review.
41 lines
1.1 KiB
Rust
41 lines
1.1 KiB
Rust
use crate::Font;
|
|
use bevy_asset::{io::Reader, AssetLoader, LoadContext};
|
|
use thiserror::Error;
|
|
|
|
#[derive(Default)]
|
|
/// An [`AssetLoader`] for [`Font`]s, for use by the [`AssetServer`](bevy_asset::AssetServer)
|
|
pub struct FontLoader;
|
|
|
|
/// Possible errors that can be produced by [`FontLoader`]
|
|
#[non_exhaustive]
|
|
#[derive(Debug, Error)]
|
|
pub enum FontLoaderError {
|
|
/// The contents that could not be parsed
|
|
#[error(transparent)]
|
|
Content(#[from] cosmic_text::ttf_parser::FaceParsingError),
|
|
/// An [IO](std::io) Error
|
|
#[error(transparent)]
|
|
Io(#[from] std::io::Error),
|
|
}
|
|
|
|
impl AssetLoader for FontLoader {
|
|
type Asset = Font;
|
|
type Settings = ();
|
|
type Error = FontLoaderError;
|
|
async fn load(
|
|
&self,
|
|
reader: &mut dyn Reader,
|
|
_settings: &(),
|
|
_load_context: &mut LoadContext<'_>,
|
|
) -> Result<Font, Self::Error> {
|
|
let mut bytes = Vec::new();
|
|
reader.read_to_end(&mut bytes).await?;
|
|
let font = Font::try_from_bytes(bytes)?;
|
|
Ok(font)
|
|
}
|
|
|
|
fn extensions(&self) -> &[&str] {
|
|
&["ttf", "otf"]
|
|
}
|
|
}
|