Assert_eq Rust: методы и примеры кода для проверок на равенство

В Rust макрос assert_eq!используется для проверки равенства двух значений. Если значения не равны, произойдет паника и отобразится сообщение об ошибке. Вот несколько методов, которые можно использовать с макросом assert_eq!, а также примеры кода:

  1. Сравнение примитивных типов:

    let actual = 42;
    let expected = 42;
    assert_eq!(actual, expected);

    В этом примере макрос assert_eq!используется для сравнения двух целых чисел (фактическогои ожидаемого) и обеспечения их равенства.

  2. Сравнение чисел с плавающей запятой:

    let actual = 3.14;
    let expected = 3.14159;
    let epsilon = 0.01;
    assert_eq!(actual, expected, epsilon);

    При сравнении чисел с плавающей запятой важно учитывать небольшие различия из-за особенностей арифметики с плавающей запятой. Параметр epsilonиспользуется для указания приемлемой разницы между двумя значениями.

  3. Сравнение строк:

    let actual = "Hello";
    let expected = String::from("Hello");
    assert_eq!(actual, expected.as_str());

    В этом примере макрос assert_eq!используется для сравнения фрагмента строки (актуальный) со строкой (ожидаемый). Метод as_str()используется для преобразования Stringв фрагмент строки для сравнения.

  4. Сравнение пользовательских типов:

    struct Person {
    name: String,
    age: u32,
    }
    let actual = Person {
    name: String::from("Alice"),
    age: 30,
    };
    let expected = Person {
    name: String::from("Alice"),
    age: 30,
    };
    assert_eq!(actual.name, expected.name);
    assert_eq!(actual.age, expected.age);

    Здесь макрос assert_eq!используется для сравнения отдельных полей двух структур Person.