Как избежать копирования векторного фрагмента при возврате данных в web::Json?

Есть ли способ возврата городов в приведенном ниже коде, который бы не включал клонирование?

pub fn cities(
    _req: HttpRequest,
    info: web::Path<(String,)>,
    data: web::Data<Arc<Mutex<DbData>>>,
) -> impl Responder {
    let letters = &info.0;
    println!("{}", letters);
    let mut re = String::with_capacity(4 + letters.len());
    re += "(?i)";
    re += letters;
    let re = Regex::new(&re).unwrap();

    let db_data = data.lock().unwrap();

    let cities: Vec<City> = db_data
        .cities
        .iter()
        .filter(|c| re.is_match(&c.name))
        .map(|c| c.clone())
        .collect();

    web::Json(cities)
}

0 ответов

Другие вопросы по тегам