コード例 #1
0
        public static async ValueTask <Maybe <T> > TryReadSafeAsync <T>(this IReadableChannel <T> channel)
        {
            T result;

            while (!channel.TryReadSafe(out result))
            {
                if (!await channel.WaitForNextSafeAsync().ConfigureAwait(false))
                {
                    return(Maybe <T> .Nothing);
                }
            }
            return(new Maybe <T>(result));
        }