Comments (5)
Makes sense to me. There is no particular reason these impl
don’t exist yet, I just didn’t think of adding them.
The traits
std::ascii::{AsciiExt, OwnedAsciiExt}
are marked experimental.
All stability markers were just copied from std::ascii
without any thought and could use being revisited. Also it’s unclear that they mean anything or should be used outside of libstd. See discussion starting at rust-lang/rfcs#507 (comment)
Duplicate implementations arise because the type
Ascii
implements the same functionality
Just remove Ascii::to_uppercase
and Ascii::to_lowercase
.
from rust-ascii.
See discussion starting at rust-lang/rfcs#507 (comment)
That is a good source of information, thanks. I consider rethinking the stability of the items in the crate.
Just remove Ascii::to_uppercase and Ascii::to_lowercase.
I didn't remove Ascii:to_uppercase
and Ascii:to_lowercase
because they are marked stable, but as long as rust has not reached 1.0 the API can change often. But the other stability markers also need recondsideration.
I'm also following the IO reform RFC in which the OsStrBuf
, etc. types are also statically enforcing certain conformance. In that manner the motivation of OsStrBuf
is similar to Ascii
. You also participated there.
from rust-ascii.
I didn't remove
Ascii:to_uppercase
andAscii:to_lowercase
because they are marked stable
Again, the stability markers only have the meaning we give them. The point of moving things out of libstd is that you don’t have to provide the stability promises. It’s OK to make breaking/backward-incompatible changes as long as the version number is changed appropriately per SemVer. (Of course, as a library matures and gets more relied on, breaking changes should become infrequent and made more thoughtfully…)
from rust-ascii.
I had a very strong reliance on the stability markers. The discussion you linked above brought some new points about the stability markers to me I didn't consider before. You are right that respecting SemVer is usually enough for a library to not break code using it immediately. Thanks for making this clear to me.
from rust-ascii.
It all depends on how many compatibility promises you, as a library maintainer, want to make. "Zero promises", although maybe painful for users, is a valid position. Stability markers and SemVer are just tools to express this. The Rust ecosystem has a relatively strong convention on SemVer, but you don’t have to use it either.
from rust-ascii.
Related Issues (20)
- Feature request: public iterator types
- Unsound usages of unsafe implementation from `AsciiStr` to `wider: ty` HOT 2
- Add support for extended ascii HOT 2
- What is the intended behaviour of AsciiStr.lines()? HOT 2
- Implement `std::str::pattern::Pattern`
- Most functions could be const HOT 4
- Update quickcheck dependency to 0.8 HOT 7
- Publish next version to crate.io? HOT 1
- Implementing `From<&mut AsciiStr>` for `&mut str` and `&mut [u8]` is unsound HOT 8
- Mark AsciiStr `#[repr(transparent)]` ? HOT 2
- Versions 0.7.0-0.9.2 are yanked? HOT 1
- All files in crate are executables HOT 1
- AsciiChar::Caret documentation shows '_' HOT 1
- Easy way to get a &str or even just &AsciiStr out of [AsciiChar; _], &[AsciiChar; _] or &[AsciiChar] HOT 2
- AsciiChar::SOX should be AsciiChar::STX HOT 2
- Publish new version with the alloc feature? HOT 6
- Create `AsciiStr` from `str` using `const fn`
- Convert to and from AsciiString and Box<AsciiStr> HOT 1
- Benchmark HOT 2
- `serde_test` should be dev-dependency HOT 3
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 rust-ascii.