diff --git a/src/pkgcheck/checks/eclass.py b/src/pkgcheck/checks/eclass.py
index 52bcea6ee..5a6b6430e 100644
--- a/src/pkgcheck/checks/eclass.py
+++ b/src/pkgcheck/checks/eclass.py
@@ -516,9 +516,9 @@ class RubyMissingDeps(results.VersionResult, results.Warning):
 
 
 class RustMissingDeps(results.VersionResult, results.Warning):
-    """Package sets ``CARGO_OPTIONAL`` but does not depend on ``virtual/rust``."""
+    """Package sets ``RUST_OPTIONAL`` but does not use ``${RUST_DEPEND}``."""
 
-    desc = "sets CARGO_OPTIONAL but does not depend on virtual/rust"
+    desc = "sets RUST_OPTIONAL (or CARGO_OPTIONAL) but does not use ${RUST_DEPEND}"
 
 
 class TmpfilesMissingDeps(results.VersionResult, results.Warning):
@@ -542,7 +542,8 @@ class EclassManualDepsCheck(Check):
 
     dependencies = (
         # eclass, variable, one of deps, class
-        ("cargo", "CARGO_OPTIONAL", {"virtual/rust"}, RustMissingDeps),
+        ("cargo", "CARGO_OPTIONAL", {"dev-lang/rust", "dev-lang/rust-bin"}, RustMissingDeps),
+        ("rust", "RUST_OPTIONAL", {"dev-lang/rust", "dev-lang/rust-bin"}, RustMissingDeps),
         ("go-module", "GO_OPTIONAL", {"dev-lang/go"}, GoMissingDeps),
         (
             "ruby-ng",
diff --git a/testdata/data/repos/standalone/EclassManualDepsCheck/RustMissingDeps/expected.json b/testdata/data/repos/standalone/EclassManualDepsCheck/RustMissingDeps/expected.json
index 43be8d931..762b9a20d 100644
--- a/testdata/data/repos/standalone/EclassManualDepsCheck/RustMissingDeps/expected.json
+++ b/testdata/data/repos/standalone/EclassManualDepsCheck/RustMissingDeps/expected.json
@@ -1 +1,3 @@
 {"__class__": "RustMissingDeps", "category": "EclassManualDepsCheck", "package": "RustMissingDeps", "version": "1"}
+{"__class__": "RustMissingDeps", "category": "EclassManualDepsCheck", "package": "RustMissingDeps", "version": "3"}
+{"__class__": "RustMissingDeps", "category": "EclassManualDepsCheck", "package": "RustMissingDeps", "version": "4"}
diff --git a/testdata/data/repos/standalone/EclassManualDepsCheck/RustMissingDeps/fix.patch b/testdata/data/repos/standalone/EclassManualDepsCheck/RustMissingDeps/fix.patch
index 08394782e..3fc81ee04 100644
--- a/testdata/data/repos/standalone/EclassManualDepsCheck/RustMissingDeps/fix.patch
+++ b/testdata/data/repos/standalone/EclassManualDepsCheck/RustMissingDeps/fix.patch
@@ -6,4 +6,22 @@ diff -Naur standalone/EclassManualDepsCheck/RustMissingDeps/RustMissingDeps-1.eb
  LICENSE="BSD"
  SLOT="0"
 +
-+BDEPEND="virtual/rust"
++BDEPEND="${RUST_DEPEND}"
+diff -Naur standalone/EclassManualDepsCheck/RustMissingDeps/RustMissingDeps-3.ebuild fixed/EclassManualDepsCheck/RustMissingDeps/RustMissingDeps-3.ebuild
+--- standalone/EclassManualDepsCheck/RustMissingDeps/RustMissingDeps-3.ebuild
++++ fixed/EclassManualDepsCheck/RustMissingDeps/RustMissingDeps-3.ebuild
+@@ -8,3 +8,5 @@ DESCRIPTION="Optional inherit without deps"
+ HOMEPAGE="https://github.com/pkgcore/pkgcheck"
+ LICENSE="BSD"
+ SLOT="0"
++
++BDEPEND="${RUST_DEPEND}"
+diff -Naur standalone/EclassManualDepsCheck/RustMissingDeps/RustMissingDeps-4.ebuild fixed/EclassManualDepsCheck/RustMissingDeps/RustMissingDeps-4.ebuild
+--- standalone/EclassManualDepsCheck/RustMissingDeps/RustMissingDeps-4.ebuild
++++ fixed/EclassManualDepsCheck/RustMissingDeps/RustMissingDeps-4.ebuild
+@@ -8,3 +8,5 @@ DESCRIPTION="Optional inherit without deps"
+ HOMEPAGE="https://github.com/pkgcore/pkgcheck"
+ LICENSE="BSD"
+ SLOT="0"
++
++BDEPEND="${RUST_DEPEND}"
diff --git a/testdata/repos/standalone/EclassManualDepsCheck/RustMissingDeps/RustMissingDeps-2.ebuild b/testdata/repos/standalone/EclassManualDepsCheck/RustMissingDeps/RustMissingDeps-2.ebuild
new file mode 100644
index 000000000..6edadd9f0
--- /dev/null
+++ b/testdata/repos/standalone/EclassManualDepsCheck/RustMissingDeps/RustMissingDeps-2.ebuild
@@ -0,0 +1,6 @@
+inherit rust
+
+DESCRIPTION="Normal non-optional inherit"
+HOMEPAGE="https://github.com/pkgcore/pkgcheck"
+LICENSE="BSD"
+SLOT="0"
diff --git a/testdata/repos/standalone/EclassManualDepsCheck/RustMissingDeps/RustMissingDeps-3.ebuild b/testdata/repos/standalone/EclassManualDepsCheck/RustMissingDeps/RustMissingDeps-3.ebuild
new file mode 100644
index 000000000..11da192c3
--- /dev/null
+++ b/testdata/repos/standalone/EclassManualDepsCheck/RustMissingDeps/RustMissingDeps-3.ebuild
@@ -0,0 +1,10 @@
+EAPI=7
+
+RUST_OPTIONAL=1
+
+inherit rust
+
+DESCRIPTION="Optional inherit without deps"
+HOMEPAGE="https://github.com/pkgcore/pkgcheck"
+LICENSE="BSD"
+SLOT="0"
diff --git a/testdata/repos/standalone/EclassManualDepsCheck/RustMissingDeps/RustMissingDeps-4.ebuild b/testdata/repos/standalone/EclassManualDepsCheck/RustMissingDeps/RustMissingDeps-4.ebuild
new file mode 100644
index 000000000..a89f53a5d
--- /dev/null
+++ b/testdata/repos/standalone/EclassManualDepsCheck/RustMissingDeps/RustMissingDeps-4.ebuild
@@ -0,0 +1,10 @@
+EAPI=7
+
+RUST_OPTIONAL=1
+
+inherit cargo
+
+DESCRIPTION="Optional inherit without deps"
+HOMEPAGE="https://github.com/pkgcore/pkgcheck"
+LICENSE="BSD"
+SLOT="0"
diff --git a/testdata/repos/standalone/dev-lang/rust-bin/rust-bin-1.81.0.ebuild b/testdata/repos/standalone/dev-lang/rust-bin/rust-bin-1.81.0.ebuild
new file mode 100644
index 000000000..2c6d46284
--- /dev/null
+++ b/testdata/repos/standalone/dev-lang/rust-bin/rust-bin-1.81.0.ebuild
@@ -0,0 +1,4 @@
+DESCRIPTION="Stub ebuild"
+HOMEPAGE="https://github.com/pkgcore/pkgcheck"
+LICENSE="BSD"
+SLOT="${PV}"
diff --git a/testdata/repos/standalone/dev-lang/rust-bin/rust-bin-1.82.0.ebuild b/testdata/repos/standalone/dev-lang/rust-bin/rust-bin-1.82.0.ebuild
new file mode 100644
index 000000000..2c6d46284
--- /dev/null
+++ b/testdata/repos/standalone/dev-lang/rust-bin/rust-bin-1.82.0.ebuild
@@ -0,0 +1,4 @@
+DESCRIPTION="Stub ebuild"
+HOMEPAGE="https://github.com/pkgcore/pkgcheck"
+LICENSE="BSD"
+SLOT="${PV}"
diff --git a/testdata/repos/standalone/dev-lang/rust/rust-1.81.0.ebuild b/testdata/repos/standalone/dev-lang/rust/rust-1.81.0.ebuild
new file mode 100644
index 000000000..2c6d46284
--- /dev/null
+++ b/testdata/repos/standalone/dev-lang/rust/rust-1.81.0.ebuild
@@ -0,0 +1,4 @@
+DESCRIPTION="Stub ebuild"
+HOMEPAGE="https://github.com/pkgcore/pkgcheck"
+LICENSE="BSD"
+SLOT="${PV}"
diff --git a/testdata/repos/standalone/dev-lang/rust/rust-1.82.0.ebuild b/testdata/repos/standalone/dev-lang/rust/rust-1.82.0.ebuild
new file mode 100644
index 000000000..2c6d46284
--- /dev/null
+++ b/testdata/repos/standalone/dev-lang/rust/rust-1.82.0.ebuild
@@ -0,0 +1,4 @@
+DESCRIPTION="Stub ebuild"
+HOMEPAGE="https://github.com/pkgcore/pkgcheck"
+LICENSE="BSD"
+SLOT="${PV}"
diff --git a/testdata/repos/standalone/eclass/cargo.eclass b/testdata/repos/standalone/eclass/cargo.eclass
index 217dc8e8d..9a9eb924f 100644
--- a/testdata/repos/standalone/eclass/cargo.eclass
+++ b/testdata/repos/standalone/eclass/cargo.eclass
@@ -1,5 +1,11 @@
 # cargo eclass
 
+if [[ -n ${CARGO_OPTIONAL} ]]; then
+	RUST_OPTIONAL=1
+fi
+
+inherit rust
+
 CARGO_CRATE_URIS=${CRATES}
 
 cargo_crate_uris() { :; }
diff --git a/testdata/repos/standalone/eclass/rust.eclass b/testdata/repos/standalone/eclass/rust.eclass
new file mode 100644
index 000000000..b85f9bde8
--- /dev/null
+++ b/testdata/repos/standalone/eclass/rust.eclass
@@ -0,0 +1,10 @@
+# rust eclass
+
+RUST_DEPEND="
+	|| (
+		dev-lang/rust-bin:1.82.0
+		dev-lang/rust:1.82.0
+		dev-lang/rust-bin:1.81.0
+		dev-lang/rust:1.81.0
+	)
+"
diff --git a/testdata/repos/standalone/virtual/rust/rust-0.ebuild b/testdata/repos/standalone/virtual/rust/rust-0.ebuild
deleted file mode 100644
index 9c2ce2e95..000000000
--- a/testdata/repos/standalone/virtual/rust/rust-0.ebuild
+++ /dev/null
@@ -1,2 +0,0 @@
-DESCRIPTION="Stub ebuild"
-SLOT="0"
