diff --git a/lib/manager/cargo/__snapshots__/artifacts.spec.ts.snap b/lib/manager/cargo/__snapshots__/artifacts.spec.ts.snap
index 466774fff14d6bfc0f576da2b82d82585957b41c..a5b226ee83ee1b3e2bbfbbb41f596a6534839d25 100644
--- a/lib/manager/cargo/__snapshots__/artifacts.spec.ts.snap
+++ b/lib/manager/cargo/__snapshots__/artifacts.spec.ts.snap
@@ -137,3 +137,26 @@ Array [
   },
 ]
 `;
+
+exports[`.updateArtifacts() updates Cargo.lock based on the lookupName, when given 1`] = `
+Array [
+  Object {
+    "cmd": "cargo update --manifest-path Cargo.toml --package dep1",
+    "options": Object {
+      "cwd": "/tmp/github/some/repo",
+      "encoding": "utf-8",
+      "env": Object {
+        "HOME": "/home/user",
+        "HTTPS_PROXY": "https://example.com",
+        "HTTP_PROXY": "http://example.com",
+        "LANG": "en_US.UTF-8",
+        "LC_ALL": "en_US",
+        "NO_PROXY": "localhost",
+        "PATH": "/tmp/path",
+      },
+      "maxBuffer": 10485760,
+      "timeout": 900000,
+    },
+  },
+]
+`;
diff --git a/lib/manager/cargo/artifacts.spec.ts b/lib/manager/cargo/artifacts.spec.ts
index c65ee47d8e255419c914c26f84e82f0b93e2e5dc..1e480556c013ea4829bf9c4c69e9f4de1a3be887 100644
--- a/lib/manager/cargo/artifacts.spec.ts
+++ b/lib/manager/cargo/artifacts.spec.ts
@@ -107,6 +107,28 @@ describe('.updateArtifacts()', () => {
     expect(execSnapshots).toMatchSnapshot();
   });
 
+  it('updates Cargo.lock based on the lookupName, when given', async () => {
+    fs.stat.mockResolvedValueOnce({ name: 'Cargo.lock' } as any);
+    git.getFile.mockResolvedValueOnce('Old Cargo.lock');
+    const execSnapshots = mockExecAll(exec);
+    fs.readFile.mockResolvedValueOnce('New Cargo.lock' as any);
+    const updatedDeps = [
+      {
+        depName: 'renamedDep1',
+        lookupName: 'dep1',
+      },
+    ];
+    expect(
+      await cargo.updateArtifacts({
+        packageFileName: 'Cargo.toml',
+        updatedDeps,
+        newPackageFileContent: '{}',
+        config,
+      })
+    ).not.toBeNull();
+    expect(execSnapshots).toMatchSnapshot();
+  });
+
   it('returns updated workspace Cargo.lock', async () => {
     fs.stat.mockRejectedValueOnce(new Error('crates/one/Cargo.lock not found'));
     fs.stat.mockRejectedValueOnce(new Error('crates/Cargo.lock not found'));
diff --git a/lib/manager/cargo/artifacts.ts b/lib/manager/cargo/artifacts.ts
index 351bdb3de46fae17a0826268211fa28e6ba6c6d4..02a3562dc7ab19aef7855d63381be917f179f76d 100644
--- a/lib/manager/cargo/artifacts.ts
+++ b/lib/manager/cargo/artifacts.ts
@@ -86,7 +86,7 @@ export async function updateArtifacts({
       const dep = updatedDeps[i];
       // Update dependency `${dep}` in Cargo.lock file corresponding to Cargo.toml file located
       // at ${localPackageFileName} path
-      await cargoUpdate(packageFileName, dep.depName);
+      await cargoUpdate(packageFileName, dep.lookupName ?? dep.depName);
     }
     if (isLockFileMaintenance) {
       await cargoUpdate(packageFileName);