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={len} }}</DisplayString>
17 <Item Name="[len]" ExcludeView="simple">len</Item>
18 <Item Name="[capacity]" ExcludeView="simple">buf.cap</Item>
20 <Variable Name="i" InitialValue="0" />
23 <If Condition="i == len">
26 <Item>buf.ptr.pointer.pointer[(i + head) % buf.cap]</Item>
27 <Exec>i = i + 1</Exec>
32 <Type Name="alloc::collections::linked_list::LinkedList<*>">
33 <DisplayString>{{ len={len} }}</DisplayString>
37 <HeadPointer>*(alloc::collections::linked_list::Node<$T1> **)&head</HeadPointer>
38 <NextPointer>*(alloc::collections::linked_list::Node<$T1> **)&next</NextPointer>
39 <ValueNode>element</ValueNode>
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>
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>
54 <ValuePointer>(char*)vec.buf.ptr.pointer.pointer</ValuePointer>
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).
65 There are also two versions for the reference count fields, one for sized and one for
68 Rc<[T]> and Arc<[T]> are handled separately altogether so we can actually show
71 <!-- alloc::rc::Rc<T> -->
72 <Type Name="alloc::rc::Rc<*>">
73 <DisplayString Optional="true">{ptr.pointer->value}</DisplayString>
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>
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>
86 <!-- alloc::rc::Rc<[T]> -->
87 <Type Name="alloc::rc::Rc<slice2$<*> >">
88 <DisplayString>{{ len={ptr.pointer.length} }}</DisplayString>
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>
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>
101 <!-- alloc::rc::Weak<T> -->
102 <Type Name="alloc::rc::Weak<*>">
103 <DisplayString Optional="true">{ptr.pointer->value}</DisplayString>
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>
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>
116 <!-- alloc::rc::Weak<[T]> -->
117 <Type Name="alloc::rc::Weak<slice2$<*> >">
118 <DisplayString>{{ len={ptr.pointer.length} }}</DisplayString>
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>
124 <Size>ptr.pointer.length</Size>
125 <ValuePointer>($T1*)(((size_t*)ptr.pointer.data_ptr) + 2)</ValuePointer>
130 <!-- alloc::sync::Arc<T> -->
131 <Type Name="alloc::sync::Arc<*>">
132 <DisplayString Optional="true">{ptr.pointer->data}</DisplayString>
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>
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>
145 <!-- alloc::sync::Arc<[T]> -->
146 <Type Name="alloc::sync::Arc<slice2$<*> >">
147 <DisplayString>{{ len={ptr.pointer.length} }}</DisplayString>
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>
153 <Size>ptr.pointer.length</Size>
154 <ValuePointer>($T1*)(((size_t*)ptr.pointer.data_ptr) + 2)</ValuePointer>
159 <!-- alloc::sync::Weak<T> -->
160 <Type Name="alloc::sync::Weak<*>">
161 <DisplayString Optional="true">{ptr.pointer->data}</DisplayString>
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>
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>
174 <!-- alloc::sync::Weak<[T]> -->
175 <Type Name="alloc::sync::Weak<slice2$<*> >">
176 <DisplayString>{{ len={ptr.pointer.length} }}</DisplayString>
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>
182 <Size>ptr.pointer.length</Size>
183 <ValuePointer>($T1*)(((size_t*)ptr.pointer.data_ptr) + 2)</ValuePointer>