sxyazi/yazi · error · io::Error
Unsupported
Unsupported
Error message
Unsupported filesystem
What it means
Guard in `engine::identical`: the comparison is only implemented for local paths, and at least one of the two URLs is not local (no local path representation). The engine returns `Unsupported` rather than a hard I/O error; the caller `must_identical` propagates it. The faulting inputs are the non-local URL(s).
Source
Thrown at yazi-vfs/src/engine/engine.rs:144
V: AsUrl,
{
let (original, link) = (original.as_url(), link.as_url());
if original.auth().same_service(link.auth()) {
Engines::new(original).await?.hard_link(link.loc()).await
} else {
Err(io::ErrorKind::CrossesDevices.into())
}
}
async fn identical<U, V>(a: U, b: V) -> io::Result<bool>
where
U: AsUrl,
V: AsUrl,
{
if let (Some(a), Some(b)) = (a.as_url().as_local(), b.as_url().as_local()) {
yazi_fs::engine::local::identical(a, b).await
} else {
Err(io::Error::new(io::ErrorKind::Unsupported, "Unsupported filesystem"))
}
}
pub async fn metadata<U>(url: U) -> io::Result<Cha>
where
U: AsUrl,
{
Engines::new(url.as_url()).await?.metadata().await
}
pub async fn must_identical<U, V>(a: U, b: V) -> bool
where
U: AsUrl,
V: AsUrl,
{
identical(a, b).await.unwrap_or(false)
}
View on GitHub (pinned to 5f901b886b)
Solutions
- Compare local paths only; for remote services, implement a service-specific identity check.
- Skip the identity optimization when either side is remote instead of relying on this function.
Defensive patterns
Strategy: fallback
When it happens
Trigger: Thrown at yazi-vfs/src/engine/engine.rs:144 when the library encounters an invalid state.
Common situations: See trigger scenarios.
AI-assisted analysis of sxyazi/yazi@5f901b886b (2026-09-02).
Data as JSON: /api/errors/a3d3e9c467d4c6fa.
Report an issue: GitHub.