ヒープかスタックか、みたいな話で終われないんじゃないの?
(一人を除いて(?)みんなが思ってるディープコピーは同じのような気もするけど)
ディープコピーは文字通り深く、根元まで全部コピーしてくれる

a = [[1, 2], 3]
b = a.clone # shallow copy
c = Marshal.load(Marshal.dump(a)) # deep copy
a[0][0] = 11
a[1] = 33
p a # [[11, 2], 33]
p b # [[11, 2], 3]
p c # [[1, 2], 3]

b[1]は3のままだけど、b[0][0]は11になっちゃってるのがシャロ―コピー
全てを複製しきってるのがディープコピー

Rustでも同じようなことにならない?
Rustにディープコピーあるのかどうか知らんけど