using System.Threading; using System.Threading.Tasks; using System.Runtime.InteropServices; namespace System.IO { partial class Stream { public virtual int Read (Span destination) { throw new NotImplementedException (); } public virtual void Write (ReadOnlySpan source) { throw new NotImplementedException (); } public virtual ValueTask ReadAsync (Memory destination, CancellationToken cancellationToken = default(CancellationToken)) { if (MemoryMarshal.TryGetArray (destination, out ArraySegment array)) return new ValueTask (ReadAsync (array.Array, array.Offset, array.Count, cancellationToken)); throw new NotImplementedException (); } public virtual ValueTask WriteAsync (ReadOnlyMemory source, CancellationToken cancellationToken = default(CancellationToken)) { if (MemoryMarshal.TryGetArray (source, out ArraySegment array)) return new ValueTask (WriteAsync (array.Array, array.Offset, array.Count, cancellationToken)); throw new NotImplementedException (); } } }