-
Notifications
You must be signed in to change notification settings - Fork 10
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 inner for NbtLists #10
base: master
Are you sure you want to change the base?
Conversation
Thanks for taking the time to put up this contribution! One minor nit: That being said, |
@@ -641,6 +641,12 @@ impl NbtList { | |||
NbtList(Vec::new()) | |||
} | |||
|
|||
/// Returns a reference to the internal vector of this NBT list. | |||
#[inline] | |||
pub fn inner(&self) -> &Vec<NbtTag> { |
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.
pub fn inner(&self) -> &Vec<NbtTag> { | |
pub fn inner(&self) -> &[NbtTag] { |
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.
Thank you for the swift response! That's true, I chose &Vec<T>
just to be consistent but when thinking about it of course a slice makes much more sense. That deref flew right over my head, I was consulting on how to access the Vec and the documentation states that inner
, inner_mut
and into_inner
are available for both NbtList
and NbtCompound
, but I hadn't realized that the inner of NbtList
is actually done via a deref. That being said I think an inner
wouldn't hurt for consistency and discoverability.
However, given that deref already provides the functionality of a slice, I do see one single use case where a slice wouldn't suffice (although I do admit it is very obscure). And that is when you have a &NbtList
and you want to assert that no memory is allocated or that no panic is possible, you would have the option to check Vec::capacity()
to see if it would fit before adding it. I do admit it is very obscure. Although one could also add capacity
as a member for NbtList to resolve that problem. But I also believe from a consistency point of view having it return the same as the others makes sense.
That being said I really love this library, I think you guys nailed the design and how well and flexible goes together, I'm really fond of using it and love to see it being well maintained. I'd like to hear some comments on this and then will adjust my PR accordingly. Thanks for taking the time!
No description provided.