sxyazi/yazi · error · io::Error
Unsupported filesystem
Error message
Unsupported filesystem
What it means
Fired by the VFS identical() helper when either of the two URLs being compared is not a local filesystem path (as_local() returns None). This generic guard exists because byte-for-byte identity can only be checked on local files; remote/sandboxed mounts have no local representation. It is raised as an io::Error with Unsupported kind and propagates to callers like must_identical, which treat it as a hard failure for operations such as overwrite-on-save that require proving two files are the same.
Source
Thrown at yazi-vfs/src/engine/engine.rs:125
U: AsUrl,
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,
{
match (a.as_url().as_local(), b.as_url().as_local()) {
(Some(a), Some(b)) => yazi_fs::engine::local::identical(a, b).await,
_ => 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_default()
}
View on GitHub (pinned to 8ebf930f17)
Solutions
- Use a URL scheme with a registered VFS engine (local file, sftp://, or a Lua VFS); the current scheme has no engine.
Defensive patterns
Strategy: try-catch
When it happens
Trigger: Thrown at yazi-vfs/src/engine/engine.rs:144 when the library encounters an invalid state.
Common situations: Routing a VFS operation to a URL scheme that no registered filesystem engine supports.
AI-assisted analysis of sxyazi/yazi@8ebf930f17 (2026-09-09).
Data as JSON: /api/errors/b6103924d4bb7588.
Report an issue: GitHub.