Sean McArthur and Carl Lerche
7e80f3b646
Optimize BufMut for Vec and BytesMut ( #338 )
2019-12-10 13:30:49 -08:00
Sean McArthur
a4908213a6
Add must_use to split, split_off, and split_to
2019-12-04 12:39:48 -08:00
Mikhail Zabaluev and Carl Lerche
af606aab9b
Fix regression in Bytes::truncate ( #333 )
...
When the length to truncate is greater than the buffer's current
length, do nothing instead of clearing the contents.
2019-12-01 14:00:42 -08:00
Sean McArthur
98951ba26c
v0.5.2
v0.5.2
2019-11-27 12:59:28 -08:00
Steven Fackler and Sean McArthur
171cffa505
Update README.md ( #320 )
2019-11-27 12:06:33 -08:00
Sean McArthur and Carl Lerche
a642e1c075
Add accessors to Limit combinator ( #325 )
2019-11-26 18:08:39 -08:00
Steven Fackler and Carl Lerche
3cf91283f8
chore: prepare v0.5.1 release ( #322 )
v0.5.1
2019-11-26 14:15:57 -08:00
Steven Fackler and Carl Lerche
1db67b4a87
doc: fix BytesMut growth documentation. ( #321 )
2019-11-25 11:40:40 -08:00
Carl Lerche and GitHub
b7c1f2a135
prepare v0.5.0 release ( #319 )
v0.5.0
2019-11-25 11:19:30 -08:00
Sean McArthur and Carl Lerche
cdd9fc09cd
Export public the combinator types ( #318 )
2019-11-25 10:47:37 -08:00
Sean McArthur and Carl Lerche
44fb206148
add BufMutExt::limit ( #309 )
...
This type is the counterpart to BufExt::take. It limits how many bytes
some `BufMut` can actually be filled with.
2019-11-20 15:10:30 -08:00
Carl Lerche and GitHub
b3f86d8654
remove either feature ( #315 )
...
remove either feature
2019-11-20 12:59:44 -08:00
Carl Lerche and GitHub
8135c1f606
implicitly grow BytesMut; add BufMutExt::chain_mut ( #316 )
...
This brings `BytesMut` in line with `Vec<u8>` behavior.
This also fixes an existing bug in BytesMut::bytes_mut that exposes
invalid slices. The bug was recently introduced and was only on master
and never released to `crates.io`.
In order to fix a test, `BufMutExt::chain_mut` is provided. Withou this,
it is not possible to chain two `&mut [u8]`.
Closes #170
2019-11-20 12:11:40 -08:00
Andrew Tunnell-Jones and Carl Lerche
59aea9e871
Make Bytes::from_static a const fn ( #311 )
...
Rust versions bumped to the minimum needed for const slice len.
2019-11-20 11:10:03 -08:00
Sean McArthur and GitHub
9a10addb44
Change loom tests to use cfg(loom) internally ( #314 )
2019-11-13 14:55:25 -08:00
Sean McArthur and GitHub
b32f6298e2
Improve performance of BytesMut::reserve ( #313 )
...
Makes the short-circuit checks inline-able, and the moves the actual
reserving code to an inner function.
2019-11-12 14:52:02 -08:00
Sean McArthur and GitHub
856ed7c43d
implement Buf for std::io::Cursor ( #308 )
2019-11-04 17:23:40 -08:00
Sean McArthur and GitHub
96268a80d4
Move "extra" methods to extension traits ( #306 )
2019-10-31 09:39:58 -07:00
Sean McArthur and GitHub
2ac72333fa
Change BufMut methods that expose maybe-uninitialized bytes ( #305 )
...
- The return type of `BufMut::bytes_mut` is now
`&mut [MaybeUninit<u8>]`.
- The argument type of `BufMut::bytes_vectored_mut` is now
`&mut [bytes::buf::IoSliceMut]`.
- `bytes::buf::IoSliceMut` is a `repr(transparent)` wrapper around an
`std::io::IoSliceMut`, but does not expose the inner bytes with a safe
API, since they might be uninitialized.
- `BufMut::bytesMut` and `BufMut::bytes_vectored_mut` are no longer
`unsafe fn`, since the types encapsulate the unsafety instead.
2019-10-24 14:40:45 -07:00
Sean McArthur and GitHub
fe2183dc2f
Add benchmarks for BytesMut vs Vec ( #303 )
2019-10-23 13:40:04 -07:00
Sean McArthur and Carl Lerche
491ebbf79a
Remove Buf impl for &str ( #301 )
...
A `&str` cannot arbitrarily advance bytes, since it will panic if
advanced to the middle of a Unicode segment.
2019-10-16 11:28:50 -07:00
Sean McArthur and GitHub
43ac8e5494
Refactor Bytes to use an internal vtable ( #298 )
...
Bytes is a useful tool for managing multiple slices into the same region
of memory, and the other things it used to have been removed to reduce
complexity. The exact strategy for managing the multiple references is
no longer hard-coded, but instead backing by a customizable vtable.
- Removed ability to mutate the underlying memory from the `Bytes` type.
- Removed the "inline" (SBO) mechanism in `Bytes`. The reduces a large
amount of complexity, and improves performance when accessing the
slice of bytes, since a branch is no longer needed to check if the
data is inline.
- Removed `Bytes` knowledge of `BytesMut` (`BytesMut` may grow that
knowledge back at a future point.)
2019-10-16 09:53:36 -07:00
Taiki Endo and Douman
ebe96021b0
Fix build fail with serde feature ( #293 )
...
Verify no-std build and all features build
2019-09-08 22:10:46 +02:00
Taiki Endo and Douman
97c1338833
Remove a patch for cross
2019-09-08 17:58:32 +02:00
Chris Beck and Carl Lerche
c17e40115f
Add no_std support, by adding an std feature ( #281 )
...
To make the library work as `no_std` we add an `std` feature which
is on by default. When it is off, we compile as `no_std` and make
parts of the API that require `std::io` conditional on the `std`
feature.
2019-09-05 14:00:23 -07:00
Taiki Endo and GitHub
73426dfaa3
Fix one use of MaybeUninit ( #291 )
2019-09-01 01:33:10 +09:00
Ralf Jung and Carl Lerche
425432ba6c
use raw ptr for racy load and add comment ( #289 )
2019-08-28 14:41:04 -07:00
Douman and Carl Lerche
4f5ed82b3c
Fix clippy ( #285 )
2019-08-27 14:19:44 -07:00
Douman
ae9991f3ba
Make From only for static slices to Bytes
2019-08-27 22:17:26 +02:00
Douman and Carl Lerche
b6cb346adf
Remove IntoBuf/FromBuf ( #288 )
...
As consequence Buf::collect is removed as well, which is replaced with `Buf::into_bytes`. The advantage of `Buf::into_bytes` is that it can be optimized in cases where converting a `T: Buf` into a `Bytes` instance is efficient.
2019-08-27 13:09:43 -07:00
nanpuyue and Douman
79e4b2847f
use mem::MaybeUninit instead of mem::uninitialized
2019-08-16 15:49:37 +02:00
nanpuyue and Douman
b1c17169d9
impl LowerHex/UpperHex for Bytes/BytesMut
2019-08-16 15:49:37 +02:00
Douman and Carl Lerche
234d814122
Remove byteorder dependency ( #280 )
2019-08-11 10:16:03 -07:00
Taiki Endo and Carl Lerche
b5d4f87e7e
Remove i128 feature ( #276 )
2019-07-30 11:19:46 -07:00
Carl Lerche and GitHub
e07a949665
Set up CI with Azure Pipelines ( #275 )
2019-07-30 10:29:00 -07:00
Taiki Endo and GitHub
ae7d884582
Update Bytes to Rust 2018 ( #274 )
2019-07-26 05:01:22 +09:00
Taiki Endo and Carl Lerche
ecdde1a996
Update travis config to test on stable ( #273 )
2019-07-24 08:25:03 -07:00
Bruce Mitchener and Sean McArthur
e25b75a28e
Fix typos.
2019-07-16 11:18:49 -07:00
Bruce Mitchener and Sean McArthur
9b5e33d6f0
Remove merge conflict marker.
2019-07-16 11:18:49 -07:00
Sean McArthur
dea868a4b0
Replace iovec with std::io::IoSlice
...
- Renames `bytes_vec` to `bytes_vectored` and `bytes_vec_mut` to
`bytes_vectored_mut`.
2019-06-11 11:58:43 -07:00
Sean McArthur
ac4e8f2fc5
Use RangeBounds trait for Bytes::slice
...
- Removes `slice_to` and `slice_from`.
2019-06-10 09:39:27 -07:00
Taiki Endo and Sean McArthur
ed7c7b5c58
Replace try! macro with ? operator
2019-06-10 09:05:11 -07:00
Sean McArthur
09772c4e77
fix benches after cursor removal
2019-06-07 15:09:06 -07:00
Sean McArthur and Carl Lerche
47fdf06e34
Make serde module private ( #262 )
2019-06-07 12:31:44 -07:00
Sean McArthur and Carl Lerche
55aa530dc1
Remove io::Cursor, and implement Buf/BufMut for slices instead ( #261 )
2019-06-07 12:31:10 -07:00
YetAnotherMinion and Sean McArthur
d8134903de
feat: remove impl IntoBuf for Cursor<Self>, impl Buf for Bytes, BytesMut, refactor iterators
2019-06-06 16:59:44 -07:00
Sean McArthur
654a11c84c
bump CI minimum Rust to 1.27 for 'dyn' keyword
2019-06-06 14:29:35 -07:00
Sean McArthur
5759211ff8
Merge branch 'v0.4.x' into uplift-0.4-commits
2019-06-06 14:08:29 -07:00
Sean McArthur and Carl Lerche
60aceba2bb
set publish to false, update meta links ( #258 )
2019-06-06 13:58:22 -07:00
Pavel Strakhov and Carl Lerche
d43e283e5e
Panic in BytesMut::split_to when out of bounds ( #252 ) ( #253 )
2019-04-02 16:24:30 -07:00