@@ -143,32 +143,58 @@ module Dict =
143
143
144
144
let inline tryFind ( key : 'k ) ( d : Dict < 'k , 'v >) =
145
145
match d.TryGetValue key with
146
- | ( true , v) -> Some v
147
- | _ -> None
146
+ | ( true , v) -> Some v
147
+ | _ -> None
148
+
149
+ let inline tryFindV ( key : 'k ) ( d : Dict < 'k , 'v >) =
150
+ let mutable value = Unchecked.defaultof<_>
151
+ if d.TryGetValue( key, & value) then ValueSome value
152
+ else ValueNone
148
153
149
154
let inline ofSeq ( elements : seq < 'k * 'v >) =
150
155
let result = Dict()
151
156
for ( k, v) in elements do
152
157
result.[ k] <- v
153
158
result
154
159
160
+ let inline ofSeqV ( elements : seq < struct ( 'k * 'v )>) =
161
+ let result = Dict()
162
+ for ( k, v) in elements do
163
+ result.[ k] <- v
164
+ result
165
+
155
166
let inline ofList ( elements : list < 'k * 'v >) =
156
167
ofSeq elements
157
168
169
+ let inline ofListV ( elements : list < struct ( 'k * 'v )>) =
170
+ ofSeqV elements
171
+
158
172
let inline ofArray ( elements : ( 'k * 'v )[]) =
159
173
ofSeq elements
160
174
175
+ let inline ofArrayV ( elements : struct ( 'k * 'v )[]) =
176
+ ofSeqV elements
177
+
161
178
let inline ofMap ( elements : Map < 'k , 'v >) =
162
179
elements |> Map.toSeq |> ofSeq
163
180
164
181
let inline toSeq ( d : Dict < 'k , 'v >) =
165
182
d |> Seq.map ( fun ( KeyValue ( k , v )) -> k, v)
166
183
184
+ let inline toSeqV ( d : Dict < 'k , 'v >) =
185
+ d |> Seq.map ( fun ( KeyValue ( k , v )) -> struct ( k, v))
186
+
167
187
let inline toList ( d : Dict < 'k , 'v >) =
168
188
d |> toSeq |> Seq.toList
169
189
190
+ let inline toListV ( d : Dict < 'k , 'v >) =
191
+ d |> toSeqV |> Seq.toList
192
+
170
193
let inline toArray ( d : Dict < 'k , 'v >) =
171
- d |> toSeq |> Seq.toArray
194
+ d |> toSeq |> Seq.toArray
195
+
196
+ let inline toArrayV ( d : Dict < 'k , 'v >) =
197
+ d |> toSeqV |> Seq.toArray
172
198
173
199
let inline toMap ( d : Dict < 'k , 'v >) =
174
200
d |> toSeq |> Map.ofSeq
0 commit comments