You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
Feature: Implement the Body trait for more native data types to improve ergonomics #3746
Currently, the 'String' is the only native data type that implements hyper::body::Body.
If we're passing other data types as a body, we need to add the http_body_util crate and add a little bit of boiler plate when building our request.
use http_body_util::Full;let some_bytes = vec![0_u8,1,2];letmut req = Request::builder().method("POST").body(Full::<Bytes>::from(some_bytes)).unwrap();
Note: While the request builder itself may not require the body to implement the Body trait, both the sender and connection returned by http1::handshake require the request's body to implement it.
With the body trait implemented for Vec<u8> (just one example that probably should implement body) we could leave out the http_body_util crate. Building a request would also become more intuitive and ergonomic.
let some_bytes = vec![0_u8,1,2];letmut req = Request::builder().method("POST").body(some_bytes).unwrap();
I've been personally torn on this. I appreciate the explicitness of having Full, and I kind of regret that we stabilized with an implementation on String.
So, part of me resists adding it to any other standard buffer types.
But I also understand that one exists, so should we just swallow the pill and provide the rest? Maybe. I don't love it. But perhaps I'm just wrong.
It seems like 80% of people (granted, only out of 5 responses) want the body trait implemented on additional types. I can get started working on this if that's good with you @seanmonstar
I've been personally torn on this. I appreciate the explicitness of having Full, and I kind of regret that we stabilized with an implementation on String.
So, part of me resists adding it to any other standard buffer types.
But I also understand that one exists, so should we just swallow the pill and provide the rest? Maybe. I don't love it. But perhaps I'm just wrong.
In hindsight, it makes sense to at least have an implementation for bytes if we have one for String.
I've already implemented this trait for Vec<u8>, but no other native types. However, it has yet to be merged, so I think the maintainers are still hesitant to extend this past the string type.
Activity
zaira-bibi commentedon Aug 27, 2024
Hi! I would like to try my hand on this issue.
seanmonstar commentedon Aug 27, 2024
I've been personally torn on this. I appreciate the explicitness of having
Full, and I kind of regret that we stabilized with an implementation onString.So, part of me resists adding it to any other standard buffer types.
But I also understand that one exists, so should we just swallow the pill and provide the rest? Maybe. I don't love it. But perhaps I'm just wrong.
akneni commentedon Aug 27, 2024
I've launched a poll here #3747 . I say we give it a little bit and see what others think.
akneni commentedon Sep 5, 2024
It seems like 80% of people (granted, only out of 5 responses) want the body trait implemented on additional types. I can get started working on this if that's good with you @seanmonstar
dswij commentedon Sep 6, 2024
In hindsight, it makes sense to at least have an implementation for bytes if we have one for
String.zaira-bibi commentedon Oct 10, 2024
Are there any plans to have an implementation for more native data types? If yes, then I would love to work on this.
akneni commentedon Oct 10, 2024
I've already implemented this trait for
Vec<u8>, but no other native types. However, it has yet to be merged, so I think the maintainers are still hesitant to extend this past the string type.