Auto merge of #138237 - reitermarkus:remove-escape-debug-inner, r= · rust-lang/rust@174fdb8 (original) (raw)

`@@ -44,7 +44,7 @@ pub use self::methods::{encode_utf8_raw, encode_utf8_raw_unchecked}; // perma-un

`

44

44

`use crate::ascii;

`

45

45

`pub(crate) use self::methods::EscapeDebugExtArgs;

`

46

46

`use crate::error::Error;

`

47

``

`-

use crate::escape;

`

``

47

`+

use crate::escape::{AlwaysEscaped, EscapeIterInner, MaybeEscaped};

`

48

48

`use crate::fmt::{self, Write};

`

49

49

`use crate::iter::{FusedIterator, TrustedLen, TrustedRandomAccess, TrustedRandomAccessNoCoerce};

`

50

50

`use crate::num::NonZero;

`

`@@ -161,12 +161,12 @@ pub const fn from_digit(num: u32, radix: u32) -> Option {

`

161

161

`` /// [escape_unicode]: char::escape_unicode

``

162

162

`#[derive(Clone, Debug)]

`

163

163

`#[stable(feature = "rust1", since = "1.0.0")]

`

164

``

`-

pub struct EscapeUnicode(escape::EscapeIterInner<10>);

`

``

164

`+

pub struct EscapeUnicode(EscapeIterInner<10, AlwaysEscaped>);

`

165

165

``

166

166

`impl EscapeUnicode {

`

167

167

`#[inline]

`

168

168

`const fn new(c: char) -> Self {

`

169

``

`-

Self(escape::EscapeIterInner::unicode(c))

`

``

169

`+

Self(EscapeIterInner::unicode(c))

`

170

170

`}

`

171

171

`}

`

172

172

``

`@@ -214,8 +214,9 @@ impl FusedIterator for EscapeUnicode {}

`

214

214

``

215

215

`#[stable(feature = "char_struct_display", since = "1.16.0")]

`

216

216

`impl fmt::Display for EscapeUnicode {

`

``

217

`+

#[inline]

`

217

218

`fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {

`

218

``

`-

f.write_str(self.0.as_str())

`

``

219

`+

fmt::Display::fmt(&self.0, f)

`

219

220

`}

`

220

221

`}

`

221

222

``

`@@ -227,22 +228,22 @@ impl fmt::Display for EscapeUnicode {

`

227

228

`` /// [escape_default]: char::escape_default

``

228

229

`#[derive(Clone, Debug)]

`

229

230

`#[stable(feature = "rust1", since = "1.0.0")]

`

230

``

`-

pub struct EscapeDefault(escape::EscapeIterInner<10>);

`

``

231

`+

pub struct EscapeDefault(EscapeIterInner<10, AlwaysEscaped>);

`

231

232

``

232

233

`impl EscapeDefault {

`

233

234

`#[inline]

`

234

235

`const fn printable(c: ascii::Char) -> Self {

`

235

``

`-

Self(escape::EscapeIterInner::ascii(c.to_u8()))

`

``

236

`+

Self(EscapeIterInner::ascii(c.to_u8()))

`

236

237

`}

`

237

238

``

238

239

`#[inline]

`

239

240

`const fn backslash(c: ascii::Char) -> Self {

`

240

``

`-

Self(escape::EscapeIterInner::backslash(c))

`

``

241

`+

Self(EscapeIterInner::backslash(c))

`

241

242

`}

`

242

243

``

243

244

`#[inline]

`

244

245

`const fn unicode(c: char) -> Self {

`

245

``

`-

Self(escape::EscapeIterInner::unicode(c))

`

``

246

`+

Self(EscapeIterInner::unicode(c))

`

246

247

`}

`

247

248

`}

`

248

249

``

`@@ -290,8 +291,9 @@ impl FusedIterator for EscapeDefault {}

`

290

291

``

291

292

`#[stable(feature = "char_struct_display", since = "1.16.0")]

`

292

293

`impl fmt::Display for EscapeDefault {

`

``

294

`+

#[inline]

`

293

295

`fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {

`

294

``

`-

f.write_str(self.0.as_str())

`

``

296

`+

fmt::Display::fmt(&self.0, f)

`

295

297

`}

`

296

298

`}

`

297

299

``

`@@ -303,37 +305,22 @@ impl fmt::Display for EscapeDefault {

`

303

305

`` /// [escape_debug]: char::escape_debug

``

304

306

`#[stable(feature = "char_escape_debug", since = "1.20.0")]

`

305

307

`#[derive(Clone, Debug)]

`

306

``

`-

pub struct EscapeDebug(EscapeDebugInner);

`

307

``

-

308

``

`-

#[derive(Clone, Debug)]

`

309

``

`-

// Note: It’s possible to manually encode the EscapeDebugInner inside of

`

310

``

`-

// EscapeIterInner (e.g. with alive=254..255 indicating that data[0..4] holds

`

311

``

`-

// a char) which would likely result in a more optimised code. For now we use

`

312

``

`-

// the option easier to implement.

`

313

``

`-

enum EscapeDebugInner {

`

314

``

`-

Bytes(escape::EscapeIterInner<10>),

`

315

``

`-

Char(char),

`

316

``

`-

}

`

``

308

`+

pub struct EscapeDebug(EscapeIterInner<10, MaybeEscaped>);

`

317

309

``

318

310

`impl EscapeDebug {

`

319

311

`#[inline]

`

320

312

`const fn printable(chr: char) -> Self {

`

321

``

`-

Self(EscapeDebugInner::Char(chr))

`

``

313

`+

Self(EscapeIterInner::printable(chr))

`

322

314

`}

`

323

315

``

324

316

`#[inline]

`

325

317

`const fn backslash(c: ascii::Char) -> Self {

`

326

``

`-

Self(EscapeDebugInner::Bytes(escape::EscapeIterInner::backslash(c)))

`

``

318

`+

Self(EscapeIterInner::backslash(c))

`

327

319

`}

`

328

320

``

329

321

`#[inline]

`

330

322

`const fn unicode(c: char) -> Self {

`

331

``

`-

Self(EscapeDebugInner::Bytes(escape::EscapeIterInner::unicode(c)))

`

332

``

`-

}

`

333

``

-

334

``

`-

#[inline]

`

335

``

`-

fn clear(&mut self) {

`

336

``

`-

self.0 = EscapeDebugInner::Bytes(escape::EscapeIterInner::empty());

`

``

323

`+

Self(EscapeIterInner::unicode(c))

`

337

324

`}

`

338

325

`}

`

339

326

``

`@@ -343,13 +330,7 @@ impl Iterator for EscapeDebug {

`

343

330

``

344

331

`#[inline]

`

345

332

`fn next(&mut self) -> Option {

`

346

``

`-

match self.0 {

`

347

``

`-

EscapeDebugInner::Bytes(ref mut bytes) => bytes.next().map(char::from),

`

348

``

`-

EscapeDebugInner::Char(chr) => {

`

349

``

`-

self.clear();

`

350

``

`-

Some(chr)

`

351

``

`-

}

`

352

``

`-

}

`

``

333

`+

self.0.next()

`

353

334

`}

`

354

335

``

355

336

`#[inline]

`

`@@ -366,11 +347,9 @@ impl Iterator for EscapeDebug {

`

366

347

``

367

348

`#[stable(feature = "char_escape_debug", since = "1.20.0")]

`

368

349

`impl ExactSizeIterator for EscapeDebug {

`

``

350

`+

#[inline]

`

369

351

`fn len(&self) -> usize {

`

370

``

`-

match &self.0 {

`

371

``

`-

EscapeDebugInner::Bytes(bytes) => bytes.len(),

`

372

``

`-

EscapeDebugInner::Char(_) => 1,

`

373

``

`-

}

`

``

352

`+

self.0.len()

`

374

353

`}

`

375

354

`}

`

376

355

``

`@@ -379,11 +358,9 @@ impl FusedIterator for EscapeDebug {}

`

379

358

``

380

359

`#[stable(feature = "char_escape_debug", since = "1.20.0")]

`

381

360

`impl fmt::Display for EscapeDebug {

`

``

361

`+

#[inline]

`

382

362

`fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {

`

383

``

`-

match &self.0 {

`

384

``

`-

EscapeDebugInner::Bytes(bytes) => f.write_str(bytes.as_str()),

`

385

``

`-

EscapeDebugInner::Char(chr) => f.write_char(*chr),

`

386

``

`-

}

`

``

363

`+

fmt::Display::fmt(&self.0, f)

`

387

364

`}

`

388

365

`}

`

389

366

``

`@@ -480,6 +457,7 @@ macro_rules! casemappingiter_impls {

`

480

457

``

481

458

` #[stable(feature = "char_struct_display", since = "1.16.0")]

`

482

459

`impl fmt::Display for $ITER_NAME {

`

``

460

`+

#[inline]

`

483

461

`fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {

`

484

462

` fmt::Display::fmt(&self.0, f)

`

485

463

`}

`