Comments (5)
Beyond requiring that the refcount is 1. It is also required that the data is stored at the beginning of the underlying allocation. Otherwise, it will need to copy the data backwards.
Lines 1215 to 1218 in fa1daac
if the underlying memory is already contiguous
The memory in a Bytes
is always contiguous.
from bytes.
So in all cases there is a copy operation, but if the refcount is not 1 (or data not stored at the beginning of the underlying allocation) there is also an allocation?
Should I make a PR to update the docstring?
from bytes.
If the refcount is one, it's just a copy within the existing buffer. There is no allocation. Allocations only happen if the refcount is at least 2.
You're very welcome to send a PR.
from bytes.
I tried to find where the docs for https://docs.rs/bytes/latest/bytes/struct.Bytes.html#method.to_vec are defined but I couldn't find them
from bytes.
Oh, that method will certainly copy the bytes unconditionally. It's defined on the standard library slice type, and Bytes
does not (and can't) override it.
The conversion that we provide is here:
Lines 943 to 948 in fa1daac
It's called using the From
trait rather than a method called to_vec
.
from bytes.
Related Issues (20)
- Provide APIs or mode that have similar non-panic guarantees to the `untrusted` crate HOT 2
- Any way to convert `HeaderValue` to `Bytes` without copying? HOT 1
- Need to obtain remaining buffer space HOT 1
- Potential to modify ordering for load in bytes.rs and bytes_mut.rs HOT 2
- Feature Request: Default implementations for heap types which support the unstable allocator API HOT 4
- Feature Request: Default implementations for pinned types HOT 2
- Feature Request: Seekable Buffer ("SeekBuf") and cursor/iterator support HOT 2
- `BufMut` does not include safety invariants in trait documentation HOT 1
- Enable shrinking of allocations
- Contradictory allocation behaviour compared to documentation HOT 9
- Confusing documentation around `Arc<[u8]>` compatibility HOT 1
- Should clone benchmark use use `test::blackbox`? HOT 1
- Explicitly guarantee `Bytes` to be immutable HOT 2
- Expose UTF-8 validated string type HOT 2
- Buf::chunks_vectored() is wrong if chunk() isn't the whole buf HOT 3
- Feature request: fallible version of `BytesMut::unsplit` (i.e. make `BytesMut::try_unsplit` public) HOT 2
- Test for unknown --cfg flags in ci
- Splice for BytesMut HOT 2
- Consider replacing Bytes::make_mut by impl From<Bytes> for BytesMut HOT 5
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from bytes.