From b46242e91b1d6de9c84b1031a4551746f0072883 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andr=C3=A9=20S=C3=A1=20de=20Mello?= Date: Sun, 23 Feb 2025 16:51:42 +0000 Subject: [PATCH 1/2] improve Token::from_encoded --- src/token.rs | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/src/token.rs b/src/token.rs index fe574a2..d00568b 100644 --- a/src/token.rs +++ b/src/token.rs @@ -70,9 +70,10 @@ impl<'a> Token<'a> { /// ## Errors /// Returns `InvalidEncodingError` if the input string is not a valid RFC /// 6901 (`~` must be followed by `0` or `1`) - pub fn from_encoded(s: &'a str) -> Result { + pub fn from_encoded(s: impl Into>) -> Result { + let inner = s.into(); let mut escaped = false; - for (offset, b) in s.bytes().enumerate() { + for (offset, b) in inner.bytes().enumerate() { match b { b'/' => { return Err(EncodingError { @@ -98,11 +99,11 @@ impl<'a> Token<'a> { } if escaped { return Err(EncodingError { - offset: s.len(), + offset: inner.len(), source: InvalidEncoding::Slash, }); } - Ok(Self { inner: s.into() }) + Ok(Self { inner }) } /// Constructs a `Token` from an arbitrary string. From c0aa57fa6023202160aa34d876b34b0332572ecc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andr=C3=A9=20S=C3=A1=20de=20Mello?= Date: Sun, 23 Feb 2025 20:47:18 +0000 Subject: [PATCH 2/2] updated changelog --- CHANGELOG.md | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 15dd2c6..f6f41c8 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -5,6 +5,13 @@ All notable changes to this project will be documented in this file. The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). +## Unreleased + +### Changed + +- `Token::from_encoded` now accepts owned or borrowed strings (any type that + implements `Into>`). + ## [0.7.1] 2025-02-16 ### Changed