Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add ControlBuilder.Memory #192

Merged
merged 2 commits into from
Aug 19, 2024
Merged

Conversation

scottbilas
Copy link
Contributor

Span<> isn't available inside of an async method, which makes it more difficult to use ControlBuilder without an alloc.

The underlying type is ArrayBufferWriter<>, which exports a Memory, so this change just exposes that API to ControlBuilder as well.

@scottbilas scottbilas marked this pull request as ready for review August 14, 2024 15:15
@scottbilas scottbilas requested a review from a team as a code owner August 14, 2024 15:15
@alexrp
Copy link
Member

alexrp commented Aug 16, 2024

I don't have any particular problem with taking this change, but just out of curiosity, what's the situation that made the Memory property necessary?

@scottbilas
Copy link
Contributor Author

scottbilas commented Aug 16, 2024

The use case is when wanting to pass ControlBuilder memory to an async utility function. The compiler will not permit receiving it as a ReadOnlySpan<char>. So ControlBuilder.Span is unusable.

A good example of this is Terminal.OutAsync(ReadOnlyMemory<char>). I can't get at the underlying ArrayBufferWriter array memory in the ControlBuilder, so the only other option is an unfortunate allocating ToString().

@alexrp alexrp force-pushed the api/add-cb-memory branch from 8353b4a to 643a185 Compare August 19, 2024 20:10
@alexrp alexrp enabled auto-merge (rebase) August 19, 2024 20:11
@alexrp alexrp merged commit 39950da into vezel-dev:master Aug 19, 2024
16 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Development

Successfully merging this pull request may close these issues.

2 participants