public SafePipeline <TNewSuccess, TFailure> Select <TNewSuccess>( Func <TSuccess, TNewSuccess> fn) { async Task <Result <TNewSuccess, TFailure> > CombineExpressions() { var result = await Expression(); return(result.Map(fn)); } return(CreateSafePipeline.With(CombineExpressions)); }
public SafePipeline <TNewSuccess, TFailure> Select <TNewSuccess>( Func <TSuccess, Task <TNewSuccess> > fn) { async Task <Result <TNewSuccess, TFailure> > CombineExpressions() { var result = await Expression(); return(await result.MapAsync(async value => await fn(value))); } return(CreateSafePipeline.With(CombineExpressions)); }
public SafePipeline <TNewSuccess, TFailure> SelectMany <TNewSuccess>( Func <TSuccess, SafePipeline <TNewSuccess, TFailure> > fn) { async Task <Result <TNewSuccess, TFailure> > CombineExpressions() { var result = await Expression(); return((await result.Map(value => fn(value)) .MapAsync(async safePipeline => await safePipeline.Flatten())) .Bind(innerResult => innerResult)); } return(CreateSafePipeline.With(CombineExpressions)); }