diff --git a/src/etc/natvis/libcollections.natvis b/src/etc/natvis/libcollections.natvis
new file mode 100644
index 0000000000000..821c52361f868
--- /dev/null
+++ b/src/etc/natvis/libcollections.natvis
@@ -0,0 +1,56 @@
+
+
+
+ {{ size={len} }}
+
+ - len
+ - buf.cap
+
+ len
+ buf.ptr.pointer.__0
+
+
+
+
+ {{ size={tail <= head ? head - tail : buf.cap - tail + head} }}
+
+ - tail <= head ? head - tail : buf.cap - tail + head
+ - buf.cap
+
+
+
+ tail <= head ? head - tail : buf.cap - tail + head
+
+
+
+
+ - buf.ptr.pointer.__0 + i
+ i = (i + 1 == buf.cap ? 0 : i + 1)
+
+
+
+
+
+ {{ size={len} }}
+
+
+ len
+ *(collections::linked_list::Node<$T1> **)&head
+ *(collections::linked_list::Node<$T1> **)&next
+ element
+
+
+
+
+ {*(char**)this,[vec.len]}
+ *(char**)this,[vec.len]
+
+ - vec.len
+ - vec.buf.cap
+
+ vec.len
+ *(char**)this
+
+
+
+
\ No newline at end of file
diff --git a/src/etc/natvis/libcore.natvis b/src/etc/natvis/libcore.natvis
new file mode 100644
index 0000000000000..37d64be1ce963
--- /dev/null
+++ b/src/etc/natvis/libcore.natvis
@@ -0,0 +1,39 @@
+
+
+
+ {{ Unique {*pointer.__0} }}
+
+ - pointer.__0
+
+
+
+ {{ Shared {*pointer.__0} }}
+
+ - pointer.__0
+
+
+
+ {{ None }}
+ {{ Some {__0} }}
+
+ - (ULONG)(RUST$ENUM$DISR != 0)
+ - __0
+
+ (ULONG)(RUST$ENUM$DISR != 0)
+ &__0
+
+
+
+
+ {{ None }}
+ {{ Some {($T1 *)this} }}
+
+ - (ULONG)(*(PVOID *)this != nullptr)
+ - ($T1 *)this
+
+ (ULONG)(*(PVOID *)this != nullptr)
+ ($T1 *)this
+
+
+
+
\ No newline at end of file