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

  1. 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.