Comments (8)
Sounds like a good idea to me! I'd grow the buffer internally
from bytes.
I don't think a writer that doesn't grow the buffer is of much use. Usually, when I need a writer, I delegate the encoding or writing to some other code. And often I don't know in advance how much such code will write.
An example of code that would make sense:
use serde_cbor;
use tokio_io::io::Encoder;
struct E;
impl Encoder for E {
...
fn encode(&mut self, item: Self::Item, dst: &mut BytesMut) -> Result<(), Self::Error> {
serde_cbor::to_writer(dst)
}
}
Now I have to wrap dst
into a newtype that implements writer because it doesn't know how to be a writer (which isn't much work). If it didn't extend the dst
as needed, I'd still need to wrap it, because I don't know the size in advance.
from bytes.
This seems fine to me. My only question is if BytesMut
should grow as needed or return an error when it is full.
Thoughts @alexcrichton
from bytes.
@alexcrichton So BufMut has a writer adapter: BufMut::writer(). That implementation does not grow the buffer. It's built on BufMut::bytes_mut and remaining_mut.
from bytes.
This is now done: https://docs.rs/bytes/0.5.6/bytes/struct.BytesMut.html#impl-Write
from bytes.
@carllerche BytesMut
still lacks an implementation of std::io::Write
.
What your URL refers to is an implementation of std::fmt::Write
, which is something different.
I'd say this issue is still unresolved.
from bytes.
@ColinFinck please see #478
from bytes.
Thanks for the reference, @taiki-e
In the meantime, I'm using BufMut::writer
on BytesMut
.
from bytes.
Related Issues (20)
- Is there a comparison of `bytes::Bytes` and `std::io::Bytes`/&[u8]`? HOT 2
- 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.