2 releases

Uses new Rust 2024

new 0.1.2 Mar 19, 2025
0.1.1 Mar 19, 2025

#491 in Internationalization (i18n)


Used in tran

MulanPSL-2.0

12KB
58 lines

range_merge

use std::ops::Range;

pub fn merge<S: AsRef<str>>(
  txt: impl AsRef<str>,
  range_li: impl AsRef<[Range<usize>]>,
  replace_li: impl AsRef<[S]>,
) -> String {
  let txt = txt.as_ref();
  let mut r = vec![];
  let mut pre = 0;
  for (range, traned) in range_li.as_ref().iter().zip(replace_li.as_ref()) {
    if range.start != pre {
      r.push(&txt[pre..range.start]);
    }
    r.push(traned.as_ref());
    pre = range.end;
  }
  if pre != txt.len() {
    r.push(&txt[pre..]);
  }
  r.join("")
}

About

This project is an open-source component of i18n.site ⋅ Internationalization Solution.

关于

本项目为 i18n.site ⋅ 国际化解决方案 的开源组件。

Dependencies

~135KB