@@ -5,6 +5,7 @@ let inline id x = x
5
5
open FsToolkit.ErrorHandling
6
6
7
7
Result.ofChoice
8
+
8
9
module Operators =
9
10
10
11
let inline bindM builder m ( [<InlineIfLambda>] f ) =
@@ -167,7 +168,6 @@ module AsyncResult =
167
168
}
168
169
169
170
170
-
171
171
module DisposableOptionThings =
172
172
open System
173
173
open System.Threading .Tasks
@@ -177,16 +177,23 @@ module DisposableOptionThings =
177
177
[<CompilationRepresentation( CompilationRepresentationFlags.UseNullAsTrueValue) >]
178
178
[<StructuralEquality; StructuralComparison>]
179
179
type DisposableOption < 'a when 'a :> IDisposable > =
180
- | None
181
- | Some of 'a
180
+ | None
181
+ | Some of 'a
182
+
182
183
interface IDisposable with
183
184
member this.Dispose () =
184
185
match this with
185
186
| None -> ()
186
187
| Some x -> x.Dispose()
187
188
188
- static member inline OfObj < 'a when 'a :> IDisposable > ( x : 'a ) =
189
- if box x |> isNull then None else Some x
189
+ static member inline OfObj < 'a when 'a :> IDisposable >( x : 'a ) =
190
+ if
191
+ box x
192
+ |> isNull
193
+ then
194
+ None
195
+ else
196
+ Some x
190
197
191
198
static member inline ToOption ( x : DisposableOption < 'a >) =
192
199
match x with
@@ -198,30 +205,25 @@ module DisposableOptionThings =
198
205
| None -> ValueOption.None
199
206
| Some x -> ValueOption.Some x
200
207
201
- static member inline OfOption ( x : 'a Option ) =
208
+ static member inline OfOption ( x : 'a Option ) =
202
209
match x with
203
210
| Option.None -> None
204
211
| Option.Some x -> Some x
205
212
206
- static member inline OfValueOption ( x : 'a ValueOption ) =
213
+ static member inline OfValueOption ( x : 'a ValueOption ) =
207
214
match x with
208
215
| ValueNone -> None
209
216
| ValueSome x -> Some x
210
217
211
- static member inline op_Implicit ( x : 'a ) =
212
- DisposableOption.OfObj x
218
+ static member inline op_Implicit ( x : 'a ) = DisposableOption.OfObj x
213
219
214
- static member inline op_Implicit ( x : 'a DisposableOption ) =
215
- DisposableOption.ToOption x
220
+ static member inline op_Implicit ( x : 'a DisposableOption ) = DisposableOption.ToOption x
216
221
217
- static member inline op_Implicit ( x : 'a DisposableOption ) =
218
- DisposableOption.ToValueOption x
222
+ static member inline op_Implicit ( x : 'a DisposableOption ) = DisposableOption.ToValueOption x
219
223
220
- static member inline op_Implicit ( x : 'a Option ) =
221
- DisposableOption.OfOption x
224
+ static member inline op_Implicit ( x : 'a Option ) = DisposableOption.OfOption x
222
225
223
- static member inline op_Imp licit ( x : 'a ValueOption ) =
224
- DisposableOption.OfValueOption x
226
+ static member inline op_Imp licit ( x : 'a ValueOption ) = DisposableOption.OfValueOption x
225
227
226
228
227
229
[<RequireQualifiedAccess>]
@@ -230,10 +232,12 @@ module DisposableOptionThings =
230
232
match x with
231
233
| DisposableOption.Some x -> f x
232
234
| DisposableOption.None -> None
235
+
233
236
let inline map f x =
234
237
match x with
235
- | DisposableOption.Some x -> Some ( f x)
238
+ | DisposableOption.Some x -> Some( f x)
236
239
| DisposableOption.None -> None
240
+
237
241
let inline iter f x =
238
242
match x with
239
243
| DisposableOption.Some x -> f x
@@ -242,16 +246,23 @@ module DisposableOptionThings =
242
246
243
247
[<RequireQualifiedAccess>]
244
248
type AsyncDisposableOption < 'a when 'a :> IAsyncDisposable > =
245
- | Some of 'a
246
- | None
249
+ | Some of 'a
250
+ | None
251
+
247
252
interface IAsyncDisposable with
248
253
member this.DisposeAsync () =
249
254
match this with
250
255
| Some x -> x.DisposeAsync()
251
256
| None -> ValueTask()
252
257
253
- static member inline ofObj ( x : 'a ) =
254
- if box x |> isNull then None else Some x
258
+ static member inline ofObj ( x : 'a ) =
259
+ if
260
+ box x
261
+ |> isNull
262
+ then
263
+ None
264
+ else
265
+ Some x
255
266
256
267
member inline x.toOption () =
257
268
match x with
@@ -263,43 +274,47 @@ module DisposableOptionThings =
263
274
| Some x -> ValueOption.Some x
264
275
| None -> ValueOption.None
265
276
266
- static member inline ofOption ( x : 'a Option ) =
277
+ static member inline ofOption ( x : 'a Option ) =
267
278
match x with
268
279
| Option.Some x -> Some x
269
280
| Option.None -> None
270
281
271
- static member inline ofValueOption ( x : 'a ValueOption ) =
282
+ static member inline ofValueOption ( x : 'a ValueOption ) =
272
283
match x with
273
284
| ValueOption.ValueSome x -> Some x
274
285
| ValueOption.ValueNone -> None
275
286
276
- static member inline op_Implicit ( x : 'a ) =
277
- AsyncDisposableOption.ofObj x
287
+ static member inline op_Implicit ( x : 'a ) = AsyncDisposableOption.ofObj x
278
288
279
- static member inline op_Implicit ( x : 'a AsyncDisposableOption ) =
280
- x.toOption()
289
+ static member inline op_Implicit ( x : 'a AsyncDisposableOption ) = x.toOption ()
281
290
282
- static member inline op_Implicit ( x : 'a AsyncDisposableOption ) =
283
- x.toValueOption()
291
+ static member inline op_Implicit ( x : 'a AsyncDisposableOption ) = x.toValueOption ()
284
292
285
- static member inline op_Implicit ( x : 'a Option ) =
286
- AsyncDisposableOption.ofOption x
293
+ static member inline op_Implicit ( x : 'a Option ) = AsyncDisposableOption.ofOption x
287
294
288
- static member inline op_Implicit ( x : 'a ValueOption ) =
289
- AsyncDisposableOption.ofValueOption x
295
+ static member inline op_Implicit ( x : 'a ValueOption ) = AsyncDisposableOption.ofValueOption x
290
296
291
297
module Examples =
292
298
open DisposableOptionThings
293
299
open System.Diagnostics
294
300
295
- let inline implicitConv ( x : ^T ) : ^U = (( ^T or ^U ) : ( static member op_Implicit : ^T -> ^U ) ( x))
301
+ let inline implicitConv ( x : ^T ) : ^U =
302
+ (( ^T or ^U ): ( static member op_Implicit : ^T -> ^U ) ( x))
303
+
296
304
let inline (!>) x = implicitConv x
297
- let inline (|!>) x f = f (!> x)
305
+ let inline (|!>) x f = f (!> x)
298
306
299
307
let activitySource = new ActivitySource( " Playground.App" )
300
308
301
309
let example () =
302
- use a = activitySource.StartActivity ( " lol " ) |> DisposableOption.OfObj
303
- a |!> Option.iter ( fun a -> a.AddTag ( " hello " , " world " ) |> ignore )
304
- ()
310
+ use a =
311
+ activitySource.StartActivity ( " lol " )
312
+ |> DisposableOption.OfObj
305
313
314
+ a
315
+ |!> Option.iter ( fun a ->
316
+ a.AddTag( " hello" , " world" )
317
+ |> ignore
318
+ )
319
+
320
+ ()
0 commit comments