Skip to content

Commit 31c06b3

Browse files
committed
Added ToLazy to LazyValue
1 parent 6e7a3df commit 31c06b3

File tree

3 files changed

+10
-5
lines changed

3 files changed

+10
-5
lines changed

src/MorleyDev.Reactive.Monad/Extensions/IOExtensions.cs

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
using System.Collections.Generic;
22
using System.Reactive.Linq;
33
using MorleyDev.Reactive.Monad.Extensions;
4+
using System;
45

56
namespace MorleyDev.Reactive.Monad.Extensions
67
{
@@ -13,7 +14,7 @@ public static class IOExtensionsNestedEnumerable
1314
/// <typeparam name="U"></typeparam>
1415
/// <param name="self"></param>
1516
/// <returns></returns>
16-
public static ManyIO<T> Merge<T, U>(this IO<U> self) where U : IEnumerable<T> => self.Select(s => s.ToObservable()).Merge().ToManyIO();
17+
public static ManyIO<T> Merge<T>(this IO<IEnumerable<T>> self) => self.Select(s => s.ToObservable()).Merge().ToManyIO();
1718

1819
/// <summary>
1920
/// Merge an IO of an Enumerable into a ManyIO
@@ -22,20 +23,19 @@ public static class IOExtensionsNestedEnumerable
2223
/// <typeparam name="U"></typeparam>
2324
/// <param name="self"></param>
2425
/// <returns></returns>
25-
public static ManyIO<T> Concat<T, U>(this IO<U> self) where U : IEnumerable<T> => self.Select(s => s.ToObservable()).Concat().ToManyIO();
26+
public static ManyIO<T> Concat<T>(this IO<IEnumerable<T>> self) => self.Select(s => s.ToObservable()).Concat().ToManyIO();
2627
}
2728

2829
public static class IOExtensionsNestedObservable
2930
{
30-
3131
/// <summary>
3232
/// Merge an IO of an Enumerable into a ManyIO
3333
/// </summary>
3434
/// <typeparam name="T"></typeparam>
3535
/// <typeparam name="U"></typeparam>
3636
/// <param name="self"></param>
3737
/// <returns></returns>
38-
public static ManyIO<T> Merge<T, U>(this IO<U> self) where U : IObservable<T> => self.SelectMany(s => s).ToManyIO();
38+
public static ManyIO<T> Merge<T>(this IO<IObservable<T>> self) => self.SelectMany(s => s).ToManyIO();
3939

4040
/// <summary>
4141
/// Merge an IO of an Enumerable into a ManyIO
@@ -44,6 +44,6 @@ public static class IOExtensionsNestedObservable
4444
/// <typeparam name="U"></typeparam>
4545
/// <param name="self"></param>
4646
/// <returns></returns>
47-
public static ManyIO<T> Concat<T, U>(this IO<U> self) where U : IObservable<T> => self.Select(s => (IObservable<T>)s).Concat().ToManyIO();
47+
public static ManyIO<T> Concat<T>(this IO<IObservable<T>> self) => self.Select(s => (IObservable<T>)s).Concat().ToManyIO();
4848
}
4949
}

src/MorleyDev.Reactive.Monad/LazyValue.cs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,8 @@ public IEnumerator<T> GetEnumerator()
3030
yield return _value();
3131
}
3232

33+
public Lazy<T> ToLazy() => new Lazy<T>(_value);
34+
3335
IEnumerator IEnumerable.GetEnumerator() => GetEnumerator();
3436
}
3537
}

test/MorleyDev.Reactive.Monad.SampleTests/IOTests.cs

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
using FluentAssertions;
22
using MorleyDev.Reactive.Monad.Extensions;
3+
using System.Collections.Generic;
34
using System.Linq;
45
using System.Reactive.Linq;
56
using System.Threading.Tasks;
@@ -17,6 +18,8 @@ public async Task Basic()
1718
(await IO.Run(() => 10).RunUnsafeIO()).Should().Be(10);
1819
(await IO.From(() => 10).Select(m => m * 10)).Should().Be(100);
1920
(await Observable.Return(10).ToIO()).Should().Be(10);
21+
22+
(await IO.From(() => (IEnumerable<int>)new[] { 10 }).Merge()).Should().Be(10);
2023
}
2124
}
2225
}

0 commit comments

Comments
 (0)