LINUX.ORG.RU

История изменений

Исправление Virtuos86, (текущая версия) :

Уважаемые растоводы, как вы дебагируете свой код?

Не «дебагируете», а «дебажите». Если, конечно, не подразумевалась пантера Багира из «Маугли» :).

Дебажу println'ами. Или велосипедными логгерами:

use std::fs::OpenOptions;

const DEBUG: bool = true;

pub fn log<S: Into<String>>(message: S) -> Result<()> {
    if !DEBUG { return Ok(()) };
    let mut message: String = message.into();
    message.push_str("\n\n=====================================================\
                      ===========================\n\n");
    OpenOptions::new()
        .append(true)
        .create(true)
        .open("log.txt")?
        .write_all(message.as_bytes())?;
    Ok(())
}

macro_rules! log {
    ($t:expr) => (log($t).unwrap())
}

fn main() {
    log!("WARNING");
}
Или пишу логи еще более велосипедистыми велосипедами:
extern crate decorators;
use decorators::decorators;

pub fn logger<T: Debug>(message: &str, arg: T) -> T {
    log(format!("{}: {:?}", message, arg )).unwrap();
    arg
}

#[decorators(logger("`foo` return"))]
pub fn foo(arg: i32) -> f64 {
    ...
}

Исходная версия Virtuos86, :

Уважаемые растоводы, как вы дебагируете свой код?

Не «дебагируете», а «дебажите». Если, конечно, не подразумевалась пантера Багира из «Маугли» :).

Дебажу println'ами. Или велосипедными логгерами:

const DEBUG: bool = true;

pub fn log<S: Into<String>>(message: S) -> Result<()> {
    if !DEBUG { return Ok(()) };
    let mut message: String = message.into();
    message.push_str("\n\n=====================================================\
                      ===========================\n\n");
    OpenOptions::new()
        .append(true)
        .create(true)
        .open("log.txt")?
        .write_all(message.as_bytes())?;
    Ok(())
}

macro_rules! log {
    ($t:expr) => (log($t).unwrap())
}

fn main() {
    log!("WARNING");
}
Или пишу логи еще более велосипедистыми велосипедами:
extern crate decorators;
use decorators::decorators;

pub fn logger<T: Debug>(message: &str, arg: T) -> T {
    log(format!("{}: {:?}", message, arg )).unwrap();
    arg
}

#[decorators(logger("`foo` return"))]
pub fn foo(arg: i32) -> f64 {
    ...
}