1<?xml version="1.0" encoding="utf-8"?> 2<AutoVisualizer xmlns="http://schemas.microsoft.com/vstudio/debugger/natvis/2010"> 3 <Type Name="alloc::vec::Vec<*>"> 4 <DisplayString>{{ len={len} }}</DisplayString> 5 <Expand> 6 <Item Name="[len]" ExcludeView="simple">len</Item> 7 <Item Name="[capacity]" ExcludeView="simple">buf.cap</Item> 8 <ArrayItems> 9 <Size>len</Size> 10 <ValuePointer>buf.ptr.pointer.pointer</ValuePointer> 11 </ArrayItems> 12 </Expand> 13 </Type> 14 <Type Name="alloc::collections::vec_deque::VecDeque<*>"> 15 <DisplayString>{{ len={len} }}</DisplayString> 16 <Expand> 17 <Item Name="[len]" ExcludeView="simple">len</Item> 18 <Item Name="[capacity]" ExcludeView="simple">buf.cap</Item> 19 <CustomListItems> 20 <Variable Name="i" InitialValue="0" /> 21 <Size>len</Size> 22 <Loop> 23 <If Condition="i == len"> 24 <Break/> 25 </If> 26 <Item>buf.ptr.pointer.pointer[(i + head) % buf.cap]</Item> 27 <Exec>i = i + 1</Exec> 28 </Loop> 29 </CustomListItems> 30 </Expand> 31 </Type> 32 <Type Name="alloc::collections::linked_list::LinkedList<*>"> 33 <DisplayString>{{ len={len} }}</DisplayString> 34 <Expand> 35 <LinkedListItems> 36 <Size>len</Size> 37 <HeadPointer>*(alloc::collections::linked_list::Node<$T1> **)&head</HeadPointer> 38 <NextPointer>*(alloc::collections::linked_list::Node<$T1> **)&next</NextPointer> 39 <ValueNode>element</ValueNode> 40 </LinkedListItems> 41 </Expand> 42 </Type> 43 <Type Name="alloc::string::String"> 44 <DisplayString>{(char*)vec.buf.ptr.pointer.pointer,[vec.len]s8}</DisplayString> 45 <StringView>(char*)vec.buf.ptr.pointer.pointer,[vec.len]s8</StringView> 46 <Expand> 47 <Item Name="[len]" ExcludeView="simple">vec.len</Item> 48 <Item Name="[capacity]" ExcludeView="simple">vec.buf.cap</Item> 49 <Synthetic Name="[chars]"> 50 <DisplayString>{(char*)vec.buf.ptr.pointer.pointer,[vec.len]s8}</DisplayString> 51 <Expand> 52 <ArrayItems> 53 <Size>vec.len</Size> 54 <ValuePointer>(char*)vec.buf.ptr.pointer.pointer</ValuePointer> 55 </ArrayItems> 56 </Expand> 57 </Synthetic> 58 </Expand> 59 </Type> 60 61 <!-- 62 The display string for Rc, Arc, etc is optional because the expression cannot be evaluated 63 if the pointee is unsized (i.e. if `ptr.pointer` is a fat pointer). 64 65 There are also two versions for the reference count fields, one for sized and one for 66 dyn pointees. 67 68 Rc<[T]> and Arc<[T]> are handled separately altogether so we can actually show 69 the slice values. 70 --> 71 <!-- alloc::rc::Rc<T> --> 72 <Type Name="alloc::rc::Rc<*>"> 73 <DisplayString Optional="true">{ptr.pointer->value}</DisplayString> 74 <Expand> 75 <!-- thin --> 76 <ExpandedItem Optional="true">ptr.pointer->value</ExpandedItem> 77 <Item Name="[Reference count]" Optional="true">ptr.pointer->strong</Item> 78 <Item Name="[Weak reference count]" Optional="true">ptr.pointer->weak</Item> 79 80 <!-- dyn --> 81 <Item Name="[Reference count]" Optional="true">ptr.pointer.pointer->strong</Item> 82 <Item Name="[Weak reference count]" Optional="true">ptr.pointer.pointer->weak</Item> 83 </Expand> 84 </Type> 85 86 <!-- alloc::rc::Rc<[T]> --> 87 <Type Name="alloc::rc::Rc<slice2$<*> >"> 88 <DisplayString>{{ len={ptr.pointer.length} }}</DisplayString> 89 <Expand> 90 <Item Name="[Length]" ExcludeView="simple">ptr.pointer.length</Item> 91 <Item Name="[Reference count]">ptr.pointer.data_ptr->strong</Item> 92 <Item Name="[Weak reference count]">ptr.pointer.data_ptr->weak</Item> 93 <ArrayItems> 94 <Size>ptr.pointer.length</Size> 95 <!-- We add +2 to the data_ptr in order to skip the ref count fields in the RcBox --> 96 <ValuePointer>($T1*)(((size_t*)ptr.pointer.data_ptr) + 2)</ValuePointer> 97 </ArrayItems> 98 </Expand> 99 </Type> 100 101 <!-- alloc::rc::Weak<T> --> 102 <Type Name="alloc::rc::Weak<*>"> 103 <DisplayString Optional="true">{ptr.pointer->value}</DisplayString> 104 <Expand> 105 <!-- thin --> 106 <ExpandedItem Optional="true">ptr.pointer->value</ExpandedItem> 107 <Item Name="[Reference count]" Optional="true">ptr.pointer->strong</Item> 108 <Item Name="[Weak reference count]" Optional="true">ptr.pointer->weak</Item> 109 110 <!-- dyn --> 111 <Item Name="[Reference count]" Optional="true">ptr.pointer.pointer->strong</Item> 112 <Item Name="[Weak reference count]" Optional="true">ptr.pointer.pointer->weak</Item> 113 </Expand> 114 </Type> 115 116 <!-- alloc::rc::Weak<[T]> --> 117 <Type Name="alloc::rc::Weak<slice2$<*> >"> 118 <DisplayString>{{ len={ptr.pointer.length} }}</DisplayString> 119 <Expand> 120 <Item Name="[Length]" ExcludeView="simple">ptr.pointer.length</Item> 121 <Item Name="[Reference count]">ptr.pointer.data_ptr->strong</Item> 122 <Item Name="[Weak reference count]">ptr.pointer.data_ptr->weak</Item> 123 <ArrayItems> 124 <Size>ptr.pointer.length</Size> 125 <ValuePointer>($T1*)(((size_t*)ptr.pointer.data_ptr) + 2)</ValuePointer> 126 </ArrayItems> 127 </Expand> 128 </Type> 129 130 <!-- alloc::sync::Arc<T> --> 131 <Type Name="alloc::sync::Arc<*>"> 132 <DisplayString Optional="true">{ptr.pointer->data}</DisplayString> 133 <Expand> 134 <!-- thin --> 135 <ExpandedItem Optional="true">ptr.pointer->data</ExpandedItem> 136 <Item Name="[Reference count]" Optional="true">ptr.pointer->strong</Item> 137 <Item Name="[Weak reference count]" Optional="true">ptr.pointer->weak</Item> 138 139 <!-- dyn --> 140 <Item Name="[Reference count]" Optional="true">ptr.pointer.pointer->strong</Item> 141 <Item Name="[Weak reference count]" Optional="true">ptr.pointer.pointer->weak</Item> 142 </Expand> 143 </Type> 144 145 <!-- alloc::sync::Arc<[T]> --> 146 <Type Name="alloc::sync::Arc<slice2$<*> >"> 147 <DisplayString>{{ len={ptr.pointer.length} }}</DisplayString> 148 <Expand> 149 <Item Name="[Length]" ExcludeView="simple">ptr.pointer.length</Item> 150 <Item Name="[Reference count]">ptr.pointer.data_ptr->strong</Item> 151 <Item Name="[Weak reference count]">ptr.pointer.data_ptr->weak</Item> 152 <ArrayItems> 153 <Size>ptr.pointer.length</Size> 154 <ValuePointer>($T1*)(((size_t*)ptr.pointer.data_ptr) + 2)</ValuePointer> 155 </ArrayItems> 156 </Expand> 157 </Type> 158 159 <!-- alloc::sync::Weak<T> --> 160 <Type Name="alloc::sync::Weak<*>"> 161 <DisplayString Optional="true">{ptr.pointer->data}</DisplayString> 162 <Expand> 163 <!-- thin --> 164 <ExpandedItem Optional="true">ptr.pointer->data</ExpandedItem> 165 <Item Name="[Reference count]" Optional="true">ptr.pointer->strong</Item> 166 <Item Name="[Weak reference count]" Optional="true">ptr.pointer->weak</Item> 167 168 <!-- dyn --> 169 <Item Name="[Reference count]" Optional="true">ptr.pointer.pointer->strong</Item> 170 <Item Name="[Weak reference count]" Optional="true">ptr.pointer.pointer->weak</Item> 171 </Expand> 172 </Type> 173 174 <!-- alloc::sync::Weak<[T]> --> 175 <Type Name="alloc::sync::Weak<slice2$<*> >"> 176 <DisplayString>{{ len={ptr.pointer.length} }}</DisplayString> 177 <Expand> 178 <Item Name="[Length]" ExcludeView="simple">ptr.pointer.length</Item> 179 <Item Name="[Reference count]">ptr.pointer.data_ptr->strong</Item> 180 <Item Name="[Weak reference count]">ptr.pointer.data_ptr->weak</Item> 181 <ArrayItems> 182 <Size>ptr.pointer.length</Size> 183 <ValuePointer>($T1*)(((size_t*)ptr.pointer.data_ptr) + 2)</ValuePointer> 184 </ArrayItems> 185 </Expand> 186 </Type> 187</AutoVisualizer> 188