упр.02 задача 3

Предадени решения

Краен срок:
22.10.2025 23:59
Точки:
1

Срокът за предаване на решения е отминал

// Include the solution source in the same file, so we
// don't have to worry about item visibility.
// Please don't use `include!` in real code, this is a hack
// around the checking system.
include!{ "../src/lib.rs" }
#[test]
fn test_basic() {
assert_eq!(split_string_at("ala-bala".to_string(), 4), ("ala-".to_string(), "bala".to_string()));
assert_eq!(split_string_at("ala-bala".to_string(), 0), ("".to_string(), "ala-bala".to_string()));
assert_eq!(split_string_at("ala-bala".to_string(), 8), ("ala-bala".to_string(), "".to_string()));
assert_eq!(split_slice_at("ala-bala", 4), ("ala-", "bala"));
assert_eq!(split_slice_at("ala-bala", 0), ("", "ala-bala"));
assert_eq!(split_slice_at("ala-bala", 8), ("ala-bala", ""));
}

Имплементирай функции, които разделят низ на две части.
Първият низ да съдържа първите n байта, вторият да съдържа останалите. Подаденото n ще бъде валидно.
Избери подходящ тип за резултата и обясни защо.

  • fn split_string_at(s: String, n: usize) -> (??, ??)
  • fn split_slice_at(s: &str, n: usize) -> (??, ??)

Опитай се да имплементираш:

  • fn split_slice_mut_at(s: &mut str, n: usize) -> (??, ??)

Обясни как може или защо не може да се имплементира.


П.С. игнорирайте линка с указания за домашни - добавя се автоматично и не е актуален в случая.

Задължително прочетете (или си припомнете): Указания за предаване на домашни

Погрижете се решението ви да се компилира с базовия тест:

// Include the solution source in the same file, so we
// don't have to worry about item visibility.
// Please don't use `include!` in real code, this is a hack
// around the checking system.
include!{ "../src/lib.rs" }
#[test]
fn test_basic() {
assert_eq!(split_string_at("ala-bala".to_string(), 4), ("ala-".to_string(), "bala".to_string()));
assert_eq!(split_string_at("ala-bala".to_string(), 0), ("".to_string(), "ala-bala".to_string()));
assert_eq!(split_string_at("ala-bala".to_string(), 8), ("ala-bala".to_string(), "".to_string()));
assert_eq!(split_slice_at("ala-bala", 4), ("ala-", "bala"));
assert_eq!(split_slice_at("ala-bala", 0), ("", "ala-bala"));
assert_eq!(split_slice_at("ala-bala", 8), ("ala-bala", ""));
}