Add this suggestion to a batch that can be applied as a single commit. This suggestion is invalid because no changes were made to the code. Suggestions cannot be applied while the pull request is closed. Suggestions cannot be applied while viewing a subset of changes. Only one suggestion per line can be applied in a batch. Add this suggestion to a batch that can be applied as a single commit. Applying suggestions on deleted lines is not supported. You must change the existing code in this line in order to create a valid suggestion. Outdated suggestions cannot be applied. This suggestion has been applied or marked resolved. Suggestions cannot be applied from pending reviews. Suggestions cannot be applied on multi-line comments. Suggestions cannot be applied while the pull request is queued to merge. Suggestion cannot be applied right now. Please check back later.
Makes the crate unconditionally
#![no_std]and pulls inextern crate allocandextern crate stdas configured by feature flags (stdremains the default).All functionality other than
HeaderMap::try_from::<std::collections::HashMap>can be implemented withalloc+hashbrown, so this crate should be usable on embedded platforms functionally as-is.Without
alloc, we can only provide support for methods, status codes, versions, and standard header names, a pretty limited subset of functionality, though still useful for consistent types in contexts without allocation. I'd be very interested in working on a future PR addingheaplesssupport (if the maintainers are amenable) so that most of this crate can work without an allocator, but that won't make it into this PR.Worth noting that #732 exists -- not aiming to tread on toes, I just wasn't aware of it until I went to submit this.
All tests pass with all combinations of feature flags.
Compatibility / substantive changes
Almost all the changes in this PR are mechanical renamings of
stdimports tocoreoralloc. The next most common changes are adding#[cfg(feature = "alloc")]where appropriate.There are no functional or compatibility changes with the
stdfeature flag, and dropping toallocfromstdonly removes theHeaderMap::try_from<std::collections::HashMap>impl (while one is still provided forhashbrown::HashMapandalloc::collections::BTreeMap).Some code changes were necessary to support non-
allocenvironments -- these are inheader/name.rs,method.rs, anduri/scheme.rs: