namespace UnityHelpers.Utils { using System; using System.Threading.Tasks; public readonly struct DeferredDisposalResult { public readonly T result; private readonly Func _disposeAsync; public DeferredDisposalResult(T result, Func disposeAsync) { this.result = result; _disposeAsync = disposeAsync ?? throw new ArgumentNullException(nameof(disposeAsync)); } public async ValueTask DisposeAsync() { await _disposeAsync(); } } }