2015-09-14 18 views
9

Tôi mới bắt đầu học Rust, và tôi đang thực hiện một số công cụ nhỏ để giúp tôi hiểu ngôn ngữ. Tôi gặp sự cố khi định dạng String bằng cách sử dụng macro format!. Như format! mất một chữ, tôi không thể vượt qua chuỗi của tôi với nó. Tôi muốn làm điều này để tự động thêm chuỗi vào chuỗi hiện tại để sử dụng trong công cụ xem. Tôi đang mở cho các đề xuất nếu có thể có một cách tốt hơn để làm điều đó.Làm cách nào để sử dụng chuỗi định dạng động với định dạng! macro?

let test = String::from("Test: {}"); 
    let test2 = String::from("Not working!"); 
    println!(test, test2); 

Điều tôi thực sự muốn đạt được là ví dụ bên dưới, nơi main.html chứa {content}.

use std::io::prelude::*; 
use std::fs::File; 
use std::io; 

fn main() { 
    let mut buffer = String::new(); 
    read_from_file_using_try(&mut buffer); 

    println!(&buffer, content="content"); 
} 

fn read_from_file_using_try(buffer: &mut String) -> Result<(), io::Error> { 
    let mut file = try!(File::open("main.html")); 
    try!(file.read_to_string(buffer)); 
    Ok(()) 
} 

Vì vậy, tôi muốn in nội dung của main.html sau khi định dạng.

+0

Có thể là bản sao của http://stackoverflow.com/questions/28333612/how-can-i-append-a-formatted-string-to-an-existing-string – Shepmaster

+1

@Shepmaster: không trùng lặp; đó là cách khác vòng: chuỗi định dạng là bit động trong câu hỏi này. –

Trả lời

5

Câu trả lời ngắn gọn: không thể thực hiện được.


Câu trả lời dài: vĩ mô (và các dẫn xuất của nó) yêu cầu chuỗi ký tự, là chuỗi được biết lúc biên dịch. Để đổi lấy yêu cầu này, nếu các đối số được cung cấp không khớp với định dạng, lỗi biên dịch sẽ được nâng lên.


Điều bạn đang tìm kiếm được gọi là công cụ tạo mẫu. Một danh sách không đầy đủ của Rust mẫu động cơ không theo thứ tự đặc biệt:

Các công cụ mẫu có các đặc tính khác nhau, và đáng chú ý là khác nhau ở mức độ xác nhận xảy ra tại thời gian biên dịch hoặc thời gian chạy và tính linh hoạt của chúng (ví dụ như tôi nhớ rằng Maud rất tập trung vào HTML). Nó tùy thuộc vào bạn để tìm ra cái phù hợp nhất cho trường hợp sử dụng của bạn.

+0

Cảm ơn bạn đã trả lời. Tôi nghĩ rằng tôi sẽ đi với thay thế thay vì mặc dù như tôi đang làm điều này để học gỉ và không cho một cái gì đó cụ thể. – Sune

1

Kiểm tra thư viện strfmt, đây là thư viện gần nhất tôi đã tìm thấy để định dạng chuỗi động.

Các vấn đề liên quan