bevyengine/bevy · error · ParseAssetPathError
Asset source must be at least one character. Either specify
Error message
Asset source must be at least one character. Either specify the source before the '://' or remove the `://`
What it means
ParseAssetPathError variant raised when a path string contains the '://' source delimiter but the source before it is empty (e.g. '://file.test'). A named source must have at least one character, or the '://' should be removed entirely.
Source
Thrown at crates/bevy_asset/src/path.rs:92
write!(f, "{}", self.path.display())?;
if let Some(label) = &self.label {
write!(f, "#{label}")?;
}
Ok(())
}
}
/// An error that occurs when parsing a string type to create an [`AssetPath`] fails, such as during [`AssetPath::parse`].
#[derive(Error, Debug, PartialEq, Eq)]
pub enum ParseAssetPathError {
/// Error that occurs when the [`AssetPath::source`] section of a path string contains the [`AssetPath::label`] delimiter `#`. E.g. `bad#source://file.test`.
#[error("Asset source must not contain a `#` character")]
InvalidSourceSyntax,
/// Error that occurs when the [`AssetPath::label`] section of a path string contains the [`AssetPath::source`] delimiter `://`. E.g. `source://file.test#bad://label`.
#[error("Asset label must not contain a `://` substring")]
InvalidLabelSyntax,
/// Error that occurs when a path string has an [`AssetPath::source`] delimiter `://` with no characters preceding it. E.g. `://file.test`.
#[error("Asset source must be at least one character. Either specify the source before the '://' or remove the `://`")]
MissingSource,
/// Error that occurs when a path string has an [`AssetPath::label`] delimiter `#` with no characters succeeding it. E.g. `file.test#`
#[error("Asset label must be at least one character. Either specify the label after the '#' or remove the '#'")]
MissingLabel,
}
impl<'a> AssetPath<'a> {
/// Creates a new [`AssetPath`] from a string in the asset path format:
/// * An asset at the root: `"scene.gltf"`
/// * An asset nested in some folders: `"some/path/scene.gltf"`
/// * An asset with a "label": `"some/path/scene.gltf#Mesh0"`
/// * An asset with a custom "source": `"custom://some/path/scene.gltf#Mesh0"`
///
/// Prefer [`From<'static str>`] for static strings, as this will prevent allocations
/// and reference counting for [`AssetPath::into_owned`].
///
/// # Panics
/// Panics if the asset path is in an invalid format. Use [`AssetPath::try_parse`] for a fallible variantView on GitHub (pinned to 8d743eb7dc)
Solutions
- Provide the source name before '://' (e.g. 'my_source://file.test')
- Remove the '://' to load from the default source with a plain path
- Fix string concatenation that produced an empty source prefix
Defensive patterns
Strategy: validation
When it happens
Trigger: Thrown at crates/bevy_asset/src/path.rs:92 when the library encounters an invalid state.
Common situations: See trigger scenarios.
AI-assisted analysis of bevyengine/bevy@8d743eb7dc (2026-08-20).
Data as JSON: /api/errors/57459e0b73b6f49e.
Report an issue: GitHub.