This repository was archived by the owner on Mar 10, 2026. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 11
Complete producer API #14
Open
darkwisebear
wants to merge
1
commit into
eclipse-score:main_api_rs
Choose a base branch
from
darkwisebear:producer-api
base: main_api_rs
Could not load branches
Branch not found: {{ refName }}
Loading
Could not load tags
Nothing to show
Loading
Are you sure you want to change the base?
Some commits from the old base branch may be removed from the timeline,
and old review comments may become outdated.
Open
Changes from all commits
Commits
File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Which exact problem we are solving with this ? This is quite risky API since beside description, we hope user will know T may not be read really (and since
as_mut_ptris common in Rust codebases, it may be easy to miss-spot in review ).There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This enables initializing the sample pointer member-by-member. It becomes important in cases where you want your produce to put the result directly into the shared memory area without first having to initialize a local instance of the type
T.This becomes important when we're talking about really big data structures. In this case, you might either not have (or want to spend) the memory to build the type internally, and copying itself also may take a non-negligible amount of time. In order to safe this, one might want to create an uninitialized sample, use this method to obtain a pointer, and then initialize the type piece by piece by write-only accesses. Since we hand back a pointer, this method can even be safe since working with a pointer is unsafe anyway.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Yes this is placement new missing in API. So I would say we have two use case
For the first I would try standarize approach ie:
and then in SampleMutUninit
For the second, since it mimics MaybeUnint api with
as_mut_ptr, it shall be fine. But maybe, theSampleMutUninit<T>shall really hold(mandate)MaybeUninit<T>instead and our api shall return ref to it ie,fn data(&mut self) -> &MaybeUninit<T>. From this point, user will get other abilities.