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>
6 <Item Name="[len]" ExcludeView="simple">len</Item>
7 <Item Name="[capacity]" ExcludeView="simple">buf.cap</Item>
10 <ValuePointer>buf.ptr.pointer.pointer</ValuePointer>
14 <Type Name="alloc::collections::vec_deque::VecDeque<*>">
15 <DisplayString>{{ len={tail <= head ? head - tail : buf.cap - tail + head} }}</DisplayString>
17 <Item Name="[len]" ExcludeView="simple">tail <= head ? head - tail : buf.cap - tail + head</Item>
18 <Item Name="[capacity]" ExcludeView="simple">buf.cap</Item>
20 <Variable Name="i" InitialValue="tail" />
22 <Size>tail <= head ? head - tail : buf.cap - tail + head</Size>
24 <If Condition="i == head">
27 <Item>buf.ptr.pointer.pointer[i]</Item>
28 <Exec>i = (i + 1 == buf.cap ? 0 : i + 1)</Exec>
33 <Type Name="alloc::collections::linked_list::LinkedList<*>">
34 <DisplayString>{{ len={len} }}</DisplayString>
38 <HeadPointer>*(alloc::collections::linked_list::Node<$T1> **)&head</HeadPointer>
39 <NextPointer>*(alloc::collections::linked_list::Node<$T1> **)&next</NextPointer>
40 <ValueNode>element</ValueNode>
44 <Type Name="alloc::string::String">
45 <DisplayString>{(char*)vec.buf.ptr.pointer.pointer,[vec.len]s8}</DisplayString>
46 <StringView>(char*)vec.buf.ptr.pointer.pointer,[vec.len]s8</StringView>
48 <Item Name="[len]" ExcludeView="simple">vec.len</Item>
49 <Item Name="[capacity]" ExcludeView="simple">vec.buf.cap</Item>
50 <Synthetic Name="[chars]">
51 <DisplayString>{(char*)vec.buf.ptr.pointer.pointer,[vec.len]s8}</DisplayString>
55 <ValuePointer>(char*)vec.buf.ptr.pointer.pointer</ValuePointer>
63 The display string for Rc, Arc, etc is optional because the expression cannot be evaluated
64 if the pointee is unsized (i.e. if `ptr.pointer` is a fat pointer).
66 There are also two versions for the reference count fields, one for sized and one for
69 Rc<[T]> and Arc<[T]> are handled separately altogether so we can actually show
72 <!-- alloc::rc::Rc<T> -->
73 <Type Name="alloc::rc::Rc<*>">
74 <DisplayString Optional="true">{ptr.pointer->value}</DisplayString>
77 <ExpandedItem Optional="true">ptr.pointer->value</ExpandedItem>
78 <Item Name="[Reference count]" Optional="true">ptr.pointer->strong</Item>
79 <Item Name="[Weak reference count]" Optional="true">ptr.pointer->weak</Item>
82 <Item Name="[Reference count]" Optional="true">ptr.pointer.pointer->strong</Item>
83 <Item Name="[Weak reference count]" Optional="true">ptr.pointer.pointer->weak</Item>
87 <!-- alloc::rc::Rc<[T]> -->
88 <Type Name="alloc::rc::Rc<slice$<*> >">
89 <DisplayString>{{ len={ptr.pointer.length} }}</DisplayString>
91 <Item Name="[Length]" ExcludeView="simple">ptr.pointer.length</Item>
92 <Item Name="[Reference count]">ptr.pointer.data_ptr->strong</Item>
93 <Item Name="[Weak reference count]">ptr.pointer.data_ptr->weak</Item>
95 <Size>ptr.pointer.length</Size>
96 <!-- We add +2 to the data_ptr in order to skip the ref count fields in the RcBox -->
97 <ValuePointer>($T1*)(((size_t*)ptr.pointer.data_ptr) + 2)</ValuePointer>
102 <!-- alloc::rc::Weak<T> -->
103 <Type Name="alloc::rc::Weak<*>">
104 <DisplayString Optional="true">{ptr.pointer->value}</DisplayString>
107 <ExpandedItem Optional="true">ptr.pointer->value</ExpandedItem>
108 <Item Name="[Reference count]" Optional="true">ptr.pointer->strong</Item>
109 <Item Name="[Weak reference count]" Optional="true">ptr.pointer->weak</Item>
112 <Item Name="[Reference count]" Optional="true">ptr.pointer.pointer->strong</Item>
113 <Item Name="[Weak reference count]" Optional="true">ptr.pointer.pointer->weak</Item>
117 <!-- alloc::rc::Weak<[T]> -->
118 <Type Name="alloc::rc::Weak<slice$<*> >">
119 <DisplayString>{{ len={ptr.pointer.length} }}</DisplayString>
121 <Item Name="[Length]" ExcludeView="simple">ptr.pointer.length</Item>
122 <Item Name="[Reference count]">ptr.pointer.data_ptr->strong</Item>
123 <Item Name="[Weak reference count]">ptr.pointer.data_ptr->weak</Item>
125 <Size>ptr.pointer.length</Size>
126 <ValuePointer>($T1*)(((size_t*)ptr.pointer.data_ptr) + 2)</ValuePointer>
131 <!-- alloc::sync::Arc<T> -->
132 <Type Name="alloc::sync::Arc<*>">
133 <DisplayString Optional="true">{ptr.pointer->data}</DisplayString>
136 <ExpandedItem Optional="true">ptr.pointer->data</ExpandedItem>
137 <Item Name="[Reference count]" Optional="true">ptr.pointer->strong</Item>
138 <Item Name="[Weak reference count]" Optional="true">ptr.pointer->weak</Item>
141 <Item Name="[Reference count]" Optional="true">ptr.pointer.pointer->strong</Item>
142 <Item Name="[Weak reference count]" Optional="true">ptr.pointer.pointer->weak</Item>
146 <!-- alloc::sync::Arc<[T]> -->
147 <Type Name="alloc::sync::Arc<slice$<*> >">
148 <DisplayString>{{ len={ptr.pointer.length} }}</DisplayString>
150 <Item Name="[Length]" ExcludeView="simple">ptr.pointer.length</Item>
151 <Item Name="[Reference count]">ptr.pointer.data_ptr->strong</Item>
152 <Item Name="[Weak reference count]">ptr.pointer.data_ptr->weak</Item>
154 <Size>ptr.pointer.length</Size>
155 <ValuePointer>($T1*)(((size_t*)ptr.pointer.data_ptr) + 2)</ValuePointer>
160 <!-- alloc::sync::Weak<T> -->
161 <Type Name="alloc::sync::Weak<*>">
162 <DisplayString Optional="true">{ptr.pointer->data}</DisplayString>
165 <ExpandedItem Optional="true">ptr.pointer->data</ExpandedItem>
166 <Item Name="[Reference count]" Optional="true">ptr.pointer->strong</Item>
167 <Item Name="[Weak reference count]" Optional="true">ptr.pointer->weak</Item>
170 <Item Name="[Reference count]" Optional="true">ptr.pointer.pointer->strong</Item>
171 <Item Name="[Weak reference count]" Optional="true">ptr.pointer.pointer->weak</Item>
175 <!-- alloc::sync::Weak<[T]> -->
176 <Type Name="alloc::sync::Weak<slice$<*> >">
177 <DisplayString>{{ len={ptr.pointer.length} }}</DisplayString>
179 <Item Name="[Length]" ExcludeView="simple">ptr.pointer.length</Item>
180 <Item Name="[Reference count]">ptr.pointer.data_ptr->strong</Item>
181 <Item Name="[Weak reference count]">ptr.pointer.data_ptr->weak</Item>
183 <Size>ptr.pointer.length</Size>
184 <ValuePointer>($T1*)(((size_t*)ptr.pointer.data_ptr) + 2)</ValuePointer>
189 <Type Name="alloc::borrow::Cow<*>">
190 <DisplayString Condition="RUST$ENUM$DISR == 0x0">Borrowed({__0})</DisplayString>
191 <DisplayString Condition="RUST$ENUM$DISR == 0x1">Owned({__0})</DisplayString>
193 <Item Name="[value]" ExcludeView="simple">__0</Item>