Comments (4)
That would be effectively the same as simdutf8::compat::from_utf8(value).and_then(|s| s.to_owned())
, yes?
Note that there was some discussion in the past about putting it in the standard library directly: https://www.reddit.com/r/rust/comments/mvc6o5/incredibly_fast_utf8_validation/
from simdutf8.
Thanks for the answer!
from simdutf8.
Ah I forgot the original problem.
String::from_utf8
converts Vec<u8>
to String
with validation. However, simdutf8
can check a slice but not a vec. You have to use String::from_utf8_unchecked
to bypass an extra copy. So there's still no safe replacement for that.
from simdutf8.
Looking into the implementation of from_utf8 this should be quite asy to add
#[inline]
pub fn from_utf8(input: &[u8]) -> Result<&str, Utf8Error> {
unsafe {
validate_utf8_basic(input)?;
Ok(from_utf8_unchecked(input))
}
}
and we just add
pub mod string {
pub use super::*;
#[inline]
pub fn from_utf8(input: Vec<u8>) -> Result<String, Utf8Error> {
unsafe {
validate_utf8_basic(&input)?;
Ok(String::from_utf8_unchecked(input))
}
}
}
from simdutf8.
Related Issues (20)
- Benchmarking error HOT 1
- Add streaming API which works with the basic and compat APIs HOT 2
- Add SIMD-enabled replacement for std::str::is_ascii() HOT 1
- The functions `validate_utf8_basic` should not be labeled unsafe HOT 3
- Experimental stdsimd implementation
- Add support for WebAssembly SIMD
- Add support for an x86/x64 SSSE3 variant
- Mislink on Windows with lld and thinlto HOT 3
- Benchmark against simdutf/simdutf
- UTF-8 reordering and deletion detector HOT 1
- Run Fuzzer on wasm32 Targeted Code HOT 3
- AArch64 SIMD intrinsics are now stable HOT 3
- Deserialising unicode escape gives non-UTF8 String HOT 2
- Heads-up: const_err lint is going away HOT 3
- wasm CI is broken on Windows
- [Bug] Test failure on arm64 HOT 5
- Miri reports UB with simd_bitmask (FW) HOT 4
- Upstream into libcore/libstd? HOT 3
- Question. Speed on large inputs. HOT 1
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 simdutf8.