[INFO] cloning repository https://github.com/julimuriass/seminario-rust
[INFO] running `Command { std: "git" "-c" "credential.helper=" "-c" "credential.helper=/workspace/cargo-home/bin/git-credential-null" "clone" "--bare" "https://github.com/julimuriass/seminario-rust" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fjulimuriass%2Fseminario-rust", kill_on_drop: false }`
[INFO] [stderr] Cloning into bare repository '/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fjulimuriass%2Fseminario-rust'...
[INFO] running `Command { std: "git" "rev-parse" "HEAD", kill_on_drop: false }`
[INFO] [stdout] 4cb6cab582b4ef7681a1ef9656c4b4c8f6b180ad
[INFO] testing julimuriass/seminario-rust against master#1f7f8ea0721a3b1eb73e6c6d25cccb371434b320 for pr-154065-1
[INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fjulimuriass%2Fseminario-rust" "/workspace/builds/worker-6-tc1/source", kill_on_drop: false }`
[INFO] [stderr] Cloning into '/workspace/builds/worker-6-tc1/source'...
[INFO] [stderr] done.
[INFO] started tweaking git repo https://github.com/julimuriass/seminario-rust
[INFO] finished tweaking git repo https://github.com/julimuriass/seminario-rust
[INFO] tweaked toml for git repo https://github.com/julimuriass/seminario-rust written to /workspace/builds/worker-6-tc1/source/Cargo.toml
[INFO] validating manifest of git repo https://github.com/julimuriass/seminario-rust on toolchain 1f7f8ea0721a3b1eb73e6c6d25cccb371434b320
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+1f7f8ea0721a3b1eb73e6c6d25cccb371434b320" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }`
[INFO] crate git repo https://github.com/julimuriass/seminario-rust already has a lockfile, it will not be regenerated
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+1f7f8ea0721a3b1eb73e6c6d25cccb371434b320" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }`
[INFO] [stderr] warning: the cargo feature `edition2024` has been stabilized in the 1.85 release and is no longer necessary to be listed in the manifest
[INFO] [stderr]   See https://doc.rust-lang.org/nightly/cargo/reference/manifest.html#the-edition-field for more information about using this feature.
[INFO] [stderr]     Updating crates.io index
[INFO] [stderr]  Downloading crates ...
[INFO] [stderr]   Downloaded anstyle-wincon v3.0.8
[INFO] [stderr]   Downloaded humantime-serde v1.1.1
[INFO] [stderr]   Downloaded ruzstd v0.7.3
[INFO] [stderr]   Downloaded cargo_metadata v0.19.2
[INFO] [stderr]   Downloaded deflate v1.0.0
[INFO] [stderr]   Downloaded toml_datetime v0.6.9
[INFO] [stderr]   Downloaded clap v4.5.38
[INFO] [stderr]   Downloaded cargo-platform v0.1.9
[INFO] [stderr]   Downloaded git2 v0.20.2
[INFO] [stderr]   Downloaded coveralls-api v0.7.0
[INFO] [stderr]   Downloaded winnow v0.7.10
[INFO] [stderr]   Downloaded gzip-header v1.0.0
[INFO] [stderr]   Downloaded indexmap v1.8.2
[INFO] [stderr]   Downloaded llvm_profparser v0.8.3
[INFO] [stderr]   Downloaded clap_builder v4.5.38
[INFO] [stderr]   Downloaded toml_edit v0.22.26
[INFO] [stderr]   Downloaded cc v1.2.24
[INFO] [stderr]   Downloaded hyper-util v0.1.12
[INFO] [stderr]   Downloaded procfs-core v0.17.0
[INFO] [stderr]   Downloaded procfs v0.17.0
[INFO] [stderr]   Downloaded toml v0.8.22
[INFO] [stderr]   Downloaded toml_write v0.1.1
[INFO] [stderr]   Downloaded libssh2-sys v0.3.1
[INFO] [stderr]   Downloaded object v0.26.2
[INFO] [stderr]   Downloaded libgit2-sys v0.18.1+1.9.0
[INFO] [stderr]   Downloaded cargo-tarpaulin v0.32.7
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-6-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-6-tc1/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:d429b63d4308055ea97f60fb1d3dfca48854a00942f1bd2ad806beaf015945ec" "/opt/rustwide/cargo-home/bin/cargo" "+1f7f8ea0721a3b1eb73e6c6d25cccb371434b320" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }`
[INFO] [stdout] bfbeb041cbf7101f1fa5db8fdba75e57a6b6500d10234a093f55a457a4007d99
[INFO] running `Command { std: "docker" "start" "-a" "bfbeb041cbf7101f1fa5db8fdba75e57a6b6500d10234a093f55a457a4007d99", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "bfbeb041cbf7101f1fa5db8fdba75e57a6b6500d10234a093f55a457a4007d99", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "bfbeb041cbf7101f1fa5db8fdba75e57a6b6500d10234a093f55a457a4007d99", kill_on_drop: false }`
[INFO] [stdout] bfbeb041cbf7101f1fa5db8fdba75e57a6b6500d10234a093f55a457a4007d99
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-6-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-6-tc1/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=forbid" "-e" "RUSTDOCFLAGS=--cap-lints=forbid" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:d429b63d4308055ea97f60fb1d3dfca48854a00942f1bd2ad806beaf015945ec" "/opt/rustwide/cargo-home/bin/cargo" "+1f7f8ea0721a3b1eb73e6c6d25cccb371434b320" "build" "--frozen" "--message-format=json", kill_on_drop: false }`
[INFO] [stdout] 80217ab1218eb1fe9770f9896021d989d3c0cfe7ac723977eeb9dfa2eb72b160
[INFO] running `Command { std: "docker" "start" "-a" "80217ab1218eb1fe9770f9896021d989d3c0cfe7ac723977eeb9dfa2eb72b160", kill_on_drop: false }`
[INFO] [stderr] warning: the cargo feature `edition2024` has been stabilized in the 1.85 release and is no longer necessary to be listed in the manifest
[INFO] [stderr]   See https://doc.rust-lang.org/nightly/cargo/reference/manifest.html#the-edition-field for more information about using this feature.
[INFO] [stderr]    Compiling unicode-ident v1.0.18
[INFO] [stderr]    Compiling libc v0.2.172
[INFO] [stderr]    Compiling stable_deref_trait v1.2.0
[INFO] [stderr]    Compiling smallvec v1.15.0
[INFO] [stderr]    Compiling bitflags v2.9.1
[INFO] [stderr]    Compiling litemap v0.8.0
[INFO] [stderr]    Compiling writeable v0.6.1
[INFO] [stderr]    Compiling icu_properties_data v2.0.1
[INFO] [stderr]    Compiling icu_normalizer_data v2.0.0
[INFO] [stderr]    Compiling tracing-core v0.1.33
[INFO] [stderr]    Compiling log v0.4.27
[INFO] [stderr]    Compiling futures-sink v0.3.31
[INFO] [stderr]    Compiling openssl v0.10.72
[INFO] [stderr]    Compiling num-traits v0.2.19
[INFO] [stderr]    Compiling miniz_oxide v0.8.8
[INFO] [stderr]    Compiling futures-util v0.3.31
[INFO] [stderr]    Compiling futures-channel v0.3.31
[INFO] [stderr]    Compiling serde_json v1.0.140
[INFO] [stderr]    Compiling proc-macro2 v1.0.95
[INFO] [stderr]    Compiling zerocopy v0.8.25
[INFO] [stderr]    Compiling flate2 v1.1.1
[INFO] [stderr]    Compiling getrandom v0.3.3
[INFO] [stderr]    Compiling iana-time-zone v0.1.63
[INFO] [stderr]    Compiling hashbrown v0.15.3
[INFO] [stderr]    Compiling rustls-pki-types v1.12.0
[INFO] [stderr]    Compiling indexmap v1.8.2
[INFO] [stderr]    Compiling camino v1.1.9
[INFO] [stderr]    Compiling anyhow v1.0.98
[INFO] [stderr]    Compiling semver v1.0.26
[INFO] [stderr]    Compiling rustix v0.38.44
[INFO] [stderr]    Compiling twox-hash v1.6.3
[INFO] [stderr]    Compiling nix v0.30.1
[INFO] [stderr]    Compiling quote v1.0.40
[INFO] [stderr]    Compiling gzip-header v1.0.0
[INFO] [stderr]    Compiling object v0.36.7
[INFO] [stderr]    Compiling md5 v0.7.0
[INFO] [stderr]    Compiling linux-raw-sys v0.4.15
[INFO] [stderr]    Compiling toml_write v0.1.1
[INFO] [stderr]    Compiling syn v2.0.101
[INFO] [stderr]    Compiling jobserver v0.1.33
[INFO] [stderr]    Compiling indexmap v2.9.0
[INFO] [stderr]    Compiling rustls-pemfile v2.2.0
[INFO] [stderr]    Compiling winnow v0.7.10
[INFO] [stderr]    Compiling hashbrown v0.11.2
[INFO] [stderr]    Compiling llvm_profparser v0.8.3
[INFO] [stderr]    Compiling minimal-lexical v0.2.1
[INFO] [stderr]    Compiling procfs v0.17.0
[INFO] [stderr]    Compiling cc v1.2.24
[INFO] [stderr]    Compiling adler32 v1.2.0
[INFO] [stderr]    Compiling deflate v1.0.0
[INFO] [stderr]    Compiling clap_builder v4.5.38
[INFO] [stderr]    Compiling ruzstd v0.7.3
[INFO] [stderr]    Compiling cargo-tarpaulin v0.32.7
[INFO] [stderr]    Compiling nom v7.1.3
[INFO] [stderr]    Compiling socket2 v0.5.9
[INFO] [stderr]    Compiling mio v1.0.3
[INFO] [stderr]    Compiling object v0.26.2
[INFO] [stderr]    Compiling tracing-log v0.2.0
[INFO] [stderr]    Compiling rand_core v0.9.3
[INFO] [stderr]    Compiling thread_local v1.1.8
[INFO] [stderr]    Compiling rustc-hash v1.1.0
[INFO] [stderr]    Compiling humantime v2.2.0
[INFO] [stderr]    Compiling leb128 v0.2.5
[INFO] [stderr]    Compiling same-file v1.0.6
[INFO] [stderr]    Compiling fallible-iterator v0.3.0
[INFO] [stderr]    Compiling tokio v1.45.0
[INFO] [stderr]    Compiling walkdir v2.5.0
[INFO] [stderr]    Compiling num_cpus v1.16.0
[INFO] [stderr]    Compiling gimli v0.31.1
[INFO] [stderr]    Compiling ppv-lite86 v0.2.21
[INFO] [stderr]    Compiling quick-xml v0.37.5
[INFO] [stderr]    Compiling rustc-demangle v0.1.24
[INFO] [stderr]    Compiling openssl-sys v0.9.108
[INFO] [stderr]    Compiling libz-sys v1.1.22
[INFO] [stderr]    Compiling libssh2-sys v0.3.1
[INFO] [stderr]    Compiling libgit2-sys v0.18.1+1.9.0
[INFO] [stderr]    Compiling rand_chacha v0.9.0
[INFO] [stderr]    Compiling glob v0.3.2
[INFO] [stderr]    Compiling native-tls v0.2.14
[INFO] [stderr]    Compiling rand v0.9.1
[INFO] [stderr]    Compiling synstructure v0.13.2
[INFO] [stderr]    Compiling serde_derive v1.0.219
[INFO] [stderr]    Compiling zerofrom-derive v0.1.6
[INFO] [stderr]    Compiling yoke-derive v0.8.0
[INFO] [stderr]    Compiling zerovec-derive v0.11.1
[INFO] [stderr]    Compiling displaydoc v0.2.5
[INFO] [stderr]    Compiling tracing-attributes v0.1.28
[INFO] [stderr]    Compiling openssl-macros v0.1.1
[INFO] [stderr]    Compiling thiserror-impl v2.0.12
[INFO] [stderr]    Compiling thiserror-impl v1.0.69
[INFO] [stderr]    Compiling clap_derive v4.5.32
[INFO] [stderr]    Compiling hyper v1.6.0
[INFO] [stderr]    Compiling tower v0.5.2
[INFO] [stderr]    Compiling zerofrom v0.1.6
[INFO] [stderr]    Compiling yoke v0.8.0
[INFO] [stderr]    Compiling zerovec v0.11.2
[INFO] [stderr]    Compiling zerotrie v0.2.2
[INFO] [stderr]    Compiling thiserror v1.0.69
[INFO] [stderr]    Compiling tracing v0.1.41
[INFO] [stderr]    Compiling thiserror v2.0.12
[INFO] [stderr]    Compiling hyper-util v0.1.12
[INFO] [stderr]    Compiling clap v4.5.38
[INFO] [stderr]    Compiling tinystr v0.8.1
[INFO] [stderr]    Compiling potential_utf v0.1.2
[INFO] [stderr]    Compiling icu_collections v2.0.0
[INFO] [stderr]    Compiling icu_locale_core v2.0.0
[INFO] [stderr]    Compiling serde v1.0.219
[INFO] [stderr]    Compiling icu_provider v2.0.0
[INFO] [stderr]    Compiling icu_properties v2.0.1
[INFO] [stderr]    Compiling icu_normalizer v2.0.0
[INFO] [stderr]    Compiling tokio-native-tls v0.3.1
[INFO] [stderr]    Compiling hyper-tls v0.6.0
[INFO] [stderr]    Compiling idna_adapter v1.2.1
[INFO] [stderr]    Compiling idna v1.0.3
[INFO] [stderr]    Compiling url v2.5.4
[INFO] [stderr]    Compiling git2 v0.20.2
[INFO] [stderr]    Compiling chrono v0.4.41
[INFO] [stderr]    Compiling toml_datetime v0.6.9
[INFO] [stderr]    Compiling serde_urlencoded v0.7.1
[INFO] [stderr]    Compiling serde_spanned v0.6.8
[INFO] [stderr]    Compiling cargo-platform v0.1.9
[INFO] [stderr]    Compiling humantime-serde v1.1.1
[INFO] [stderr]    Compiling toml_edit v0.22.26
[INFO] [stderr]    Compiling reqwest v0.12.15
[INFO] [stderr]    Compiling cargo_metadata v0.19.2
[INFO] [stderr]    Compiling procfs-core v0.17.0
[INFO] [stderr]    Compiling tracing-subscriber v0.3.19
[INFO] [stderr]    Compiling toml v0.8.22
[INFO] [stderr]    Compiling coveralls-api v0.7.0
[INFO] [stderr]    Compiling seminario-rust v0.1.0 (/opt/rustwide/workdir)
[INFO] [stdout] warning: unnecessary parentheses around `if` condition
[INFO] [stdout]   --> src/tp03/ej08.rs:99:16
[INFO] [stdout]    |
[INFO] [stdout] 99 |             if (song.titulo == nombre) {
[INFO] [stdout]    |                ^                     ^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_parens)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]    |
[INFO] [stdout] 99 -             if (song.titulo == nombre) {
[INFO] [stdout] 99 +             if song.titulo == nombre {
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around pattern
[INFO] [stdout]   --> src/tp03/ej10.rs:54:9
[INFO] [stdout]    |
[INFO] [stdout] 54 |         (EstadoPrestamo::EnPrestamo) => true,
[INFO] [stdout]    |         ^                          ^
[INFO] [stdout]    |
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]    |
[INFO] [stdout] 54 -         (EstadoPrestamo::EnPrestamo) => true,
[INFO] [stdout] 54 +         EstadoPrestamo::EnPrestamo  => true,
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::ptr::eq`
[INFO] [stdout]  --> src/tp04/ej03.rs:1:5
[INFO] [stdout]   |
[INFO] [stdout] 1 | use std::ptr::eq;
[INFO] [stdout]   |     ^^^^^^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `core::panic`
[INFO] [stdout]  --> src/main.rs:8:5
[INFO] [stdout]   |
[INFO] [stdout] 8 | use core::panic;
[INFO] [stdout]   |     ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `days_in_current_month` is never read
[INFO] [stdout]   --> src/tp03/ej03.rs:76:41
[INFO] [stdout]    |
[INFO] [stdout] 76 |         let mut days_in_current_month = days_in_month[self.mes as usize];
[INFO] [stdout]    |                                         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = help: maybe it is overwritten before being read?
[INFO] [stdout]    = note: `#[warn(unused_assignments)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `days_in_current_month` is never read
[INFO] [stdout]   --> src/tp03/ej03.rs:79:13
[INFO] [stdout]    |
[INFO] [stdout] 79 |             days_in_current_month = 29;
[INFO] [stdout]    |             ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = help: maybe it is overwritten before being read?
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `numero_tarjeta`
[INFO] [stdout]    --> src/tp04/ej03.rs:141:41
[INFO] [stdout]     |
[INFO] [stdout] 141 |             MedioPago::TarjetaCredito { numero_tarjeta } => String::from("TarjetaCredito"),
[INFO] [stdout]     |                                         ^^^^^^^^^^^^^^ help: try ignoring the field: `numero_tarjeta: _`
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `cbu`
[INFO] [stdout]    --> src/tp04/ej03.rs:142:38
[INFO] [stdout]     |
[INFO] [stdout] 142 |             MedioPago::MercadoPago { cbu } => String::from("MercadoPago"),
[INFO] [stdout]     |                                      ^^^ help: try ignoring the field: `cbu: _`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `cuenta_destino`
[INFO] [stdout]    --> src/tp04/ej03.rs:143:48
[INFO] [stdout]     |
[INFO] [stdout] 143 |             MedioPago::TransferenciaBancaria { cuenta_destino, cuenta_origen } => String::from("TransferenciaBancaria"),
[INFO] [stdout]     |                                                ^^^^^^^^^^^^^^ help: try ignoring the field: `cuenta_destino: _`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `cuenta_origen`
[INFO] [stdout]    --> src/tp04/ej03.rs:143:64
[INFO] [stdout]     |
[INFO] [stdout] 143 |             MedioPago::TransferenciaBancaria { cuenta_destino, cuenta_origen } => String::from("TransferenciaBancaria"),
[INFO] [stdout]     |                                                                ^^^^^^^^^^^^^ help: try ignoring the field: `cuenta_origen: _`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `tipo_cripto`
[INFO] [stdout]    --> src/tp04/ej03.rs:144:33
[INFO] [stdout]     |
[INFO] [stdout] 144 |             MedioPago::Cripto { tipo_cripto } => String::from("Cripto"),
[INFO] [stdout]     |                                 ^^^^^^^^^^^ help: try ignoring the field: `tipo_cripto: _`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: irrefutable `if let` pattern
[INFO] [stdout]    --> src/tp04/ej03.rs:234:12
[INFO] [stdout]     |
[INFO] [stdout] 234 |         if let user_existe = self.usuarios.iter().find(|u| u.id == id) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: this pattern will always match, so the `if let` is useless
[INFO] [stdout]     = help: consider replacing the `if let` with a `let`
[INFO] [stdout]     = note: `#[warn(irrefutable_let_patterns)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `user_existe`
[INFO] [stdout]    --> src/tp04/ej03.rs:234:16
[INFO] [stdout]     |
[INFO] [stdout] 234 |         if let user_existe = self.usuarios.iter().find(|u| u.id == id) {
[INFO] [stdout]     |                ^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_user_existe`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `suscripcion`
[INFO] [stdout]    --> src/tp04/ej03.rs:352:50
[INFO] [stdout]     |
[INFO] [stdout] 352 |                 u.suscripciones.iter().for_each(|suscripcion| {
[INFO] [stdout]     |                                                  ^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_suscripcion`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]   --> src/main.rs:47:9
[INFO] [stdout]    |
[INFO] [stdout] 47 |     let mut var_ingresada: bool = match var_ingresada.trim().parse(){
[INFO] [stdout]    |         ----^^^^^^^^^^^^^
[INFO] [stdout]    |         |
[INFO] [stdout]    |         help: remove this `mut`
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_mut)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]   --> src/main.rs:55:9
[INFO] [stdout]    |
[INFO] [stdout] 55 |     let mut var_ingresada = var_ingresada && t;
[INFO] [stdout]    |         ----^^^^^^^^^^^^^
[INFO] [stdout]    |         |
[INFO] [stdout]    |         help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]   --> src/main.rs:58:9
[INFO] [stdout]    |
[INFO] [stdout] 58 |     let mut var_ingresada = var_ingresada || t;
[INFO] [stdout]    |         ----^^^^^^^^^^^^^
[INFO] [stdout]    |         |
[INFO] [stdout]    |         help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]   --> src/main.rs:89:9
[INFO] [stdout]    |
[INFO] [stdout] 89 |     let mut number :u32 = 2;
[INFO] [stdout]    |         ----^^^^^^
[INFO] [stdout]    |         |
[INFO] [stdout]    |         help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]   --> src/main.rs:97:9
[INFO] [stdout]    |
[INFO] [stdout] 97 |     let mut number_ingresado:u32 = match number_ingresado.trim().parse(){
[INFO] [stdout]    |         ----^^^^^^^^^^^^^^^^
[INFO] [stdout]    |         |
[INFO] [stdout]    |         help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/main.rs:105:9
[INFO] [stdout]     |
[INFO] [stdout] 105 |     let mut number = number + number_ingresado;
[INFO] [stdout]     |         ----^^^^^^
[INFO] [stdout]     |         |
[INFO] [stdout]     |         help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/main.rs:136:9
[INFO] [stdout]     |
[INFO] [stdout] 136 |     let mut caracter: char = caracter.trim().parse()
[INFO] [stdout]     |         ----^^^^^^^^
[INFO] [stdout]     |         |
[INFO] [stdout]     |         help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `suma_auxiliar` is never read
[INFO] [stdout]    --> src/main.rs:171:38
[INFO] [stdout]     |
[INFO] [stdout] 171 |         let mut suma_auxiliar: i32 = 0;
[INFO] [stdout]     |                                      ^
[INFO] [stdout]     |
[INFO] [stdout]     = help: maybe it is overwritten before being read?
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: type `julieta_murias_v1::Examen` is more private than the item `julieta_murias_v1::obtener_materia_calificacion_alta`
[INFO] [stdout]   --> src/tp03/julieta_murias_v1.rs:24:1
[INFO] [stdout]    |
[INFO] [stdout] 24 | pub fn obtener_materia_calificacion_alta(examenes: &Vec<Examen>) -> String {
[INFO] [stdout]    | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ function `julieta_murias_v1::obtener_materia_calificacion_alta` is reachable at visibility `pub(crate)`
[INFO] [stdout]    |
[INFO] [stdout] note: but type `julieta_murias_v1::Examen` is only usable at visibility `pub(self)`
[INFO] [stdout]   --> src/tp03/julieta_murias_v1.rs:1:1
[INFO] [stdout]    |
[INFO] [stdout]  1 | struct Examen {
[INFO] [stdout]    | ^^^^^^^^^^^^^
[INFO] [stdout]    = note: `#[warn(private_interfaces)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: type `julieta_murias_v1::Examen` is more private than the item `julieta_murias_v1::obtener_materia_calificacion_baja`
[INFO] [stdout]   --> src/tp03/julieta_murias_v1.rs:44:1
[INFO] [stdout]    |
[INFO] [stdout] 44 | pub fn obtener_materia_calificacion_baja(examenes: &Vec<Examen>) -> String {
[INFO] [stdout]    | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ function `julieta_murias_v1::obtener_materia_calificacion_baja` is reachable at visibility `pub(crate)`
[INFO] [stdout]    |
[INFO] [stdout] note: but type `julieta_murias_v1::Examen` is only usable at visibility `pub(self)`
[INFO] [stdout]   --> src/tp03/julieta_murias_v1.rs:1:1
[INFO] [stdout]    |
[INFO] [stdout]  1 | struct Examen {
[INFO] [stdout]    | ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: type `Color` is more private than the item `compare_colors`
[INFO] [stdout]   --> src/tp03/ej07.rs:29:1
[INFO] [stdout]    |
[INFO] [stdout] 29 | pub fn compare_colors(color1: &Color, color2: &Color) -> bool {
[INFO] [stdout]    | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ function `compare_colors` is reachable at visibility `pub(crate)`
[INFO] [stdout]    |
[INFO] [stdout] note: but type `Color` is only usable at visibility `pub(self)`
[INFO] [stdout]   --> src/tp03/ej07.rs:3:1
[INFO] [stdout]    |
[INFO] [stdout]  3 | enum Color {
[INFO] [stdout]    | ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: type `Auto` is more private than the item `ej07::compare`
[INFO] [stdout]   --> src/tp03/ej07.rs:41:1
[INFO] [stdout]    |
[INFO] [stdout] 41 | pub fn compare (auto1: &Auto, auto2: &Auto) -> bool {
[INFO] [stdout]    | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ function `ej07::compare` is reachable at visibility `pub(crate)`
[INFO] [stdout]    |
[INFO] [stdout] note: but type `Auto` is only usable at visibility `pub(self)`
[INFO] [stdout]   --> src/tp03/ej07.rs:12:1
[INFO] [stdout]    |
[INFO] [stdout] 12 | struct Auto {
[INFO] [stdout]    | ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: type `ej08::Genero` is more private than the item `compare_genre`
[INFO] [stdout]   --> src/tp03/ej08.rs:32:1
[INFO] [stdout]    |
[INFO] [stdout] 32 | pub fn compare_genre(genero1: &Genero, genero2: &Genero) -> bool {
[INFO] [stdout]    | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ function `compare_genre` is reachable at visibility `pub(crate)`
[INFO] [stdout]    |
[INFO] [stdout] note: but type `ej08::Genero` is only usable at visibility `pub(self)`
[INFO] [stdout]   --> src/tp03/ej08.rs:2:1
[INFO] [stdout]    |
[INFO] [stdout]  2 | enum Genero {
[INFO] [stdout]    | ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: type `Cancion` is more private than the item `ej08::compare`
[INFO] [stdout]   --> src/tp03/ej08.rs:43:1
[INFO] [stdout]    |
[INFO] [stdout] 43 | pub fn compare (cancion1: &Cancion, cancion2: &Cancion) -> bool {
[INFO] [stdout]    | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ function `ej08::compare` is reachable at visibility `pub(crate)`
[INFO] [stdout]    |
[INFO] [stdout] note: but type `Cancion` is only usable at visibility `pub(self)`
[INFO] [stdout]   --> src/tp03/ej08.rs:11:1
[INFO] [stdout]    |
[INFO] [stdout] 11 | struct Cancion {
[INFO] [stdout]    | ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: type `Dueño` is more private than the item `compare_owners`
[INFO] [stdout]   --> src/tp03/ej09.rs:45:1
[INFO] [stdout]    |
[INFO] [stdout] 45 | pub fn compare_owners(owner1: &Dueño, owner2: &Dueño) -> bool {
[INFO] [stdout]    | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ function `compare_owners` is reachable at visibility `pub(crate)`
[INFO] [stdout]    |
[INFO] [stdout] note: but type `Dueño` is only usable at visibility `pub(self)`
[INFO] [stdout]   --> src/tp03/ej09.rs:39:1
[INFO] [stdout]    |
[INFO] [stdout] 39 | struct Dueño {
[INFO] [stdout]    | ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: type `TipoAnimal` is more private than the item `compare_type`
[INFO] [stdout]   --> src/tp03/ej09.rs:51:1
[INFO] [stdout]    |
[INFO] [stdout] 51 | pub fn compare_type(type1: &TipoAnimal, type2: &TipoAnimal)  -> bool{
[INFO] [stdout]    | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ function `compare_type` is reachable at visibility `pub(crate)`
[INFO] [stdout]    |
[INFO] [stdout] note: but type `TipoAnimal` is only usable at visibility `pub(self)`
[INFO] [stdout]   --> src/tp03/ej09.rs:7:1
[INFO] [stdout]    |
[INFO] [stdout]  7 | enum TipoAnimal {
[INFO] [stdout]    | ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: type `Mascota` is more private than the item `compare_pets`
[INFO] [stdout]   --> src/tp03/ej09.rs:61:1
[INFO] [stdout]    |
[INFO] [stdout] 61 | pub fn compare_pets (mascota1: &Mascota, mascota2: &Mascota) -> bool {
[INFO] [stdout]    | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ function `compare_pets` is reachable at visibility `pub(crate)`
[INFO] [stdout]    |
[INFO] [stdout] note: but type `Mascota` is only usable at visibility `pub(self)`
[INFO] [stdout]   --> src/tp03/ej09.rs:31:1
[INFO] [stdout]    |
[INFO] [stdout] 31 | struct Mascota {
[INFO] [stdout]    | ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: type `Atencion` is more private than the item `compare_atencion`
[INFO] [stdout]   --> src/tp03/ej09.rs:78:1
[INFO] [stdout]    |
[INFO] [stdout] 78 | pub fn compare_atencion(atencion1: &Atencion, atencion2: &Atencion) -> bool {
[INFO] [stdout]    | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ function `compare_atencion` is reachable at visibility `pub(crate)`
[INFO] [stdout]    |
[INFO] [stdout] note: but type `Atencion` is only usable at visibility `pub(self)`
[INFO] [stdout]   --> src/tp03/ej09.rs:23:1
[INFO] [stdout]    |
[INFO] [stdout] 23 | struct Atencion {
[INFO] [stdout]    | ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: type `EstadoPrestamo` is more private than the item `no_devolvio`
[INFO] [stdout]   --> src/tp03/ej10.rs:52:1
[INFO] [stdout]    |
[INFO] [stdout] 52 | pub fn no_devolvio (estado: &EstadoPrestamo) -> bool {
[INFO] [stdout]    | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ function `no_devolvio` is reachable at visibility `pub(crate)`
[INFO] [stdout]    |
[INFO] [stdout] note: but type `EstadoPrestamo` is only usable at visibility `pub(self)`
[INFO] [stdout]   --> src/tp03/ej10.rs:13:1
[INFO] [stdout]    |
[INFO] [stdout] 13 | enum EstadoPrestamo {
[INFO] [stdout]    | ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: type `ej10::Cliente` is more private than the item `compare_clientes`
[INFO] [stdout]   --> src/tp03/ej10.rs:59:1
[INFO] [stdout]    |
[INFO] [stdout] 59 | pub fn compare_clientes (cliente1: &Cliente, cliente2: &Cliente) -> bool {
[INFO] [stdout]    | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ function `compare_clientes` is reachable at visibility `pub(crate)`
[INFO] [stdout]    |
[INFO] [stdout] note: but type `ej10::Cliente` is only usable at visibility `pub(self)`
[INFO] [stdout]   --> src/tp03/ej10.rs:46:1
[INFO] [stdout]    |
[INFO] [stdout] 46 | struct Cliente {
[INFO] [stdout]    | ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: type `julieta_murias_v2::Examen` is more private than the item `julieta_murias_v2::obtener_materia_calificacion_alta`
[INFO] [stdout]   --> src/tp03/julieta_murias_v2.rs:24:1
[INFO] [stdout]    |
[INFO] [stdout] 24 | pub fn obtener_materia_calificacion_alta(examenes: &Vec<Examen>) -> String {
[INFO] [stdout]    | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ function `julieta_murias_v2::obtener_materia_calificacion_alta` is reachable at visibility `pub(crate)`
[INFO] [stdout]    |
[INFO] [stdout] note: but type `julieta_murias_v2::Examen` is only usable at visibility `pub(self)`
[INFO] [stdout]   --> src/tp03/julieta_murias_v2.rs:1:1
[INFO] [stdout]    |
[INFO] [stdout]  1 | struct Examen {
[INFO] [stdout]    | ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: type `julieta_murias_v2::Examen` is more private than the item `julieta_murias_v2::obtener_materia_calificacion_baja`
[INFO] [stdout]   --> src/tp03/julieta_murias_v2.rs:44:1
[INFO] [stdout]    |
[INFO] [stdout] 44 | pub fn obtener_materia_calificacion_baja(examenes: &Vec<Examen>) -> String {
[INFO] [stdout]    | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ function `julieta_murias_v2::obtener_materia_calificacion_baja` is reachable at visibility `pub(crate)`
[INFO] [stdout]    |
[INFO] [stdout] note: but type `julieta_murias_v2::Examen` is only usable at visibility `pub(self)`
[INFO] [stdout]   --> src/tp03/julieta_murias_v2.rs:1:1
[INFO] [stdout]    |
[INFO] [stdout]  1 | struct Examen {
[INFO] [stdout]    | ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: type `tp04::ej02::Persona<'_>` is more private than the item `tp04::ej02::compare`
[INFO] [stdout]    --> src/tp04/ej02.rs:109:1
[INFO] [stdout]     |
[INFO] [stdout] 109 | pub fn compare (person1: Persona, person2: Persona) -> bool {
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ function `tp04::ej02::compare` is reachable at visibility `pub(crate)`
[INFO] [stdout]     |
[INFO] [stdout] note: but type `tp04::ej02::Persona<'_>` is only usable at visibility `pub(self)`
[INFO] [stdout]    --> src/tp04/ej02.rs:2:1
[INFO] [stdout]     |
[INFO] [stdout]   2 | struct Persona <'a>{
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Persona` is never constructed
[INFO] [stdout]  --> src/tp03/ej01.rs:1:8
[INFO] [stdout]   |
[INFO] [stdout] 1 | struct Persona {
[INFO] [stdout]   |        ^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new`, `to_string`, `obtener_edad`, and `actualizar_direccion` are never used
[INFO] [stdout]   --> src/tp03/ej01.rs:8:8
[INFO] [stdout]    |
[INFO] [stdout]  7 | impl Persona {
[INFO] [stdout]    | ------------ associated items in this implementation
[INFO] [stdout]  8 |     fn new (edad: u32, nombre: String, direccion: Option<String>) -> Persona {
[INFO] [stdout]    |        ^^^
[INFO] [stdout] ...
[INFO] [stdout] 16 |     fn to_string (&self) -> String {
[INFO] [stdout]    |        ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 26 |     fn obtener_edad (&self) -> u32 {
[INFO] [stdout]    |        ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 30 |     fn actualizar_direccion (&mut self, new_direction: Option<String>){
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Rectangulo` is never constructed
[INFO] [stdout]  --> src/tp03/ej02.rs:1:8
[INFO] [stdout]   |
[INFO] [stdout] 1 | struct Rectangulo {
[INFO] [stdout]   |        ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new`, `calcular_area`, `calcular_perimetro`, and `es_cuadrado` are never used
[INFO] [stdout]   --> src/tp03/ej02.rs:8:8
[INFO] [stdout]    |
[INFO] [stdout]  6 | impl Rectangulo {
[INFO] [stdout]    | --------------- associated items in this implementation
[INFO] [stdout]  7 |
[INFO] [stdout]  8 |     fn new (ancho: f64, longitud: f64) -> Rectangulo {
[INFO] [stdout]    |        ^^^
[INFO] [stdout] ...
[INFO] [stdout] 15 |     fn calcular_area (&self) -> f64 {
[INFO] [stdout]    |        ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 19 |     fn calcular_perimetro (&self) -> f64 {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 23 |     fn es_cuadrado (&self) -> bool {
[INFO] [stdout]    |        ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Fecha` is never constructed
[INFO] [stdout]  --> src/tp03/ej03.rs:3:12
[INFO] [stdout]   |
[INFO] [stdout] 3 | pub struct Fecha {
[INFO] [stdout]   |            ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new`, `es_bisiesto`, `es_fecha_valida`, `sumar_dias`, `restar_dias`, and `es_mayor` are never used
[INFO] [stdout]    --> src/tp03/ej03.rs:10:12
[INFO] [stdout]     |
[INFO] [stdout]   9 | impl Fecha {
[INFO] [stdout]     | ---------- associated items in this implementation
[INFO] [stdout]  10 |     pub fn new (dia: u32, mes: u32, año: u32) -> Fecha {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout]  18 |     fn es_bisiesto (&self) -> bool {
[INFO] [stdout]     |        ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  25 |     fn es_fecha_valida (&self) -> bool {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  41 |     pub fn sumar_dias (&mut self, mut days: u32) {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  74 |     fn restar_dias (&mut self, mut days: u32) {
[INFO] [stdout]     |        ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 104 |     pub fn es_mayor (&self, other: &Fecha) -> bool { //Retorna true si la fecha que recibí es mayor.
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Triangulo` is never constructed
[INFO] [stdout]  --> src/tp03/ej04.rs:1:8
[INFO] [stdout]   |
[INFO] [stdout] 1 | struct Triangulo {
[INFO] [stdout]   |        ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new`, `determinar_tipo`, `calcular_area`, and `calcular_perimetro` are never used
[INFO] [stdout]   --> src/tp03/ej04.rs:8:8
[INFO] [stdout]    |
[INFO] [stdout]  7 | impl Triangulo {
[INFO] [stdout]    | -------------- associated items in this implementation
[INFO] [stdout]  8 |     fn new (lado1: f64, lado2: f64, lado3: f64) -> Triangulo {
[INFO] [stdout]    |        ^^^
[INFO] [stdout] ...
[INFO] [stdout] 16 |     fn determinar_tipo (&self) -> String {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 28 |     fn calcular_area (&self) -> f64 {
[INFO] [stdout]    |        ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 34 |     fn calcular_perimetro (&self) -> f64 {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Producto` is never constructed
[INFO] [stdout]  --> src/tp03/ej05.rs:1:8
[INFO] [stdout]   |
[INFO] [stdout] 1 | struct Producto {
[INFO] [stdout]   |        ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new`, `calcular_impuestos`, `aplicar_descuento`, and `calcular_precio_total` are never used
[INFO] [stdout]   --> src/tp03/ej05.rs:8:8
[INFO] [stdout]    |
[INFO] [stdout]  7 | impl Producto {
[INFO] [stdout]    | ------------- associated items in this implementation
[INFO] [stdout]  8 |     fn new(nombre: String, precio_bruto: f64, id: u32) -> Producto {
[INFO] [stdout]    |        ^^^
[INFO] [stdout] ...
[INFO] [stdout] 16 |     fn calcular_impuestos(&self, tax_percentage: f64) -> f64 {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 20 |     fn aplicar_descuento(&self, discount_percentage: f64) -> f64 {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 24 |     fn calcular_precio_total(&self, tax_percentage: Option<f64>, discount_percentage: Option<f64>) -> f64 {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Examen` is never constructed
[INFO] [stdout]  --> src/tp03/julieta_murias_v1.rs:1:8
[INFO] [stdout]   |
[INFO] [stdout] 1 | struct Examen {
[INFO] [stdout]   |        ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Estudiante` is never constructed
[INFO] [stdout]  --> src/tp03/julieta_murias_v1.rs:6:8
[INFO] [stdout]   |
[INFO] [stdout] 6 | struct Estudiante {
[INFO] [stdout]   |        ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Informe` is never constructed
[INFO] [stdout]   --> src/tp03/julieta_murias_v1.rs:13:8
[INFO] [stdout]    |
[INFO] [stdout] 13 | struct Informe {
[INFO] [stdout]    |        ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `obtener_materia_calificacion_alta` is never used
[INFO] [stdout]   --> src/tp03/julieta_murias_v1.rs:24:8
[INFO] [stdout]    |
[INFO] [stdout] 24 | pub fn obtener_materia_calificacion_alta(examenes: &Vec<Examen>) -> String {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `obtener_materia_calificacion_baja` is never used
[INFO] [stdout]   --> src/tp03/julieta_murias_v1.rs:44:8
[INFO] [stdout]    |
[INFO] [stdout] 44 | pub fn obtener_materia_calificacion_baja(examenes: &Vec<Examen>) -> String {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `new` is never used
[INFO] [stdout]   --> src/tp03/julieta_murias_v1.rs:66:8
[INFO] [stdout]    |
[INFO] [stdout] 65 | impl Examen {
[INFO] [stdout]    | ----------- associated function in this implementation
[INFO] [stdout] 66 |     fn new(nombre_materia: String, nota: f64) -> Examen {
[INFO] [stdout]    |        ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new`, `obtener_promedio`, `obtener_calificacion_mas_alta`, `obtener_calificacion_mas_baja`, and `generar_informe` are never used
[INFO] [stdout]    --> src/tp03/julieta_murias_v1.rs:75:8
[INFO] [stdout]     |
[INFO] [stdout]  74 | impl Estudiante {
[INFO] [stdout]     | --------------- associated items in this implementation
[INFO] [stdout]  75 |     fn new(nombre: String, id: i32) -> Estudiante {
[INFO] [stdout]     |        ^^^
[INFO] [stdout] ...
[INFO] [stdout]  83 |     fn obtener_promedio(&self) -> f64 {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  98 |      fn obtener_calificacion_mas_alta(&self) -> f64 {
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 114 |      fn obtener_calificacion_mas_baja(&self) -> f64 {
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 130 |      fn generar_informe (&self) -> Option<Informe> {
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `Color` is never used
[INFO] [stdout]  --> src/tp03/ej07.rs:3:6
[INFO] [stdout]   |
[INFO] [stdout] 3 | enum Color {
[INFO] [stdout]   |      ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Auto` is never constructed
[INFO] [stdout]   --> src/tp03/ej07.rs:12:8
[INFO] [stdout]    |
[INFO] [stdout] 12 | struct Auto {
[INFO] [stdout]    |        ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `ConsecionarioAuto` is never constructed
[INFO] [stdout]   --> src/tp03/ej07.rs:20:8
[INFO] [stdout]    |
[INFO] [stdout] 20 | struct ConsecionarioAuto {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `compare_colors` is never used
[INFO] [stdout]   --> src/tp03/ej07.rs:29:8
[INFO] [stdout]    |
[INFO] [stdout] 29 | pub fn compare_colors(color1: &Color, color2: &Color) -> bool {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `compare` is never used
[INFO] [stdout]   --> src/tp03/ej07.rs:41:8
[INFO] [stdout]    |
[INFO] [stdout] 41 | pub fn compare (auto1: &Auto, auto2: &Auto) -> bool {
[INFO] [stdout]    |        ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new`, `agregar_auto`, `eliminar_auto`, and `buscar_auto` are never used
[INFO] [stdout]   --> src/tp03/ej07.rs:51:8
[INFO] [stdout]    |
[INFO] [stdout] 50 | impl ConsecionarioAuto {
[INFO] [stdout]    | ---------------------- associated items in this implementation
[INFO] [stdout] 51 |     fn new(nombre: String, direccion: String, x: u32) -> ConsecionarioAuto {
[INFO] [stdout]    |        ^^^
[INFO] [stdout] ...
[INFO] [stdout] 60 |     fn agregar_auto(&mut self, auto: &Auto) -> bool {
[INFO] [stdout]    |        ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 69 |     fn eliminar_auto(&mut self, auto: &Auto) {
[INFO] [stdout]    |        ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 84 |     fn buscar_auto(&self, auto: &Auto) -> Option<&Auto> {
[INFO] [stdout]    |        ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new` and `calcular_precio` are never used
[INFO] [stdout]    --> src/tp03/ej07.rs:95:8
[INFO] [stdout]     |
[INFO] [stdout]  94 | impl Auto {
[INFO] [stdout]     | --------- associated items in this implementation
[INFO] [stdout]  95 |     fn new(marca: String, modelo: String, precio_bruto: f64, año: u32, color: Color ) -> Auto {
[INFO] [stdout]     |        ^^^
[INFO] [stdout] ...
[INFO] [stdout] 105 |     fn calcular_precio(&self) -> f64 {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `Genero` is never used
[INFO] [stdout]  --> src/tp03/ej08.rs:2:6
[INFO] [stdout]   |
[INFO] [stdout] 2 | enum Genero {
[INFO] [stdout]   |      ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Cancion` is never constructed
[INFO] [stdout]   --> src/tp03/ej08.rs:11:8
[INFO] [stdout]    |
[INFO] [stdout] 11 | struct Cancion {
[INFO] [stdout]    |        ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `PlayList` is never constructed
[INFO] [stdout]   --> src/tp03/ej08.rs:17:8
[INFO] [stdout]    |
[INFO] [stdout] 17 | struct PlayList {
[INFO] [stdout]    |        ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `new` is never used
[INFO] [stdout]   --> src/tp03/ej08.rs:23:8
[INFO] [stdout]    |
[INFO] [stdout] 22 | impl Cancion {
[INFO] [stdout]    | ------------ associated function in this implementation
[INFO] [stdout] 23 |     fn new(titulo: String, artista: String, genero: Genero) -> Cancion {
[INFO] [stdout]    |        ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `compare_genre` is never used
[INFO] [stdout]   --> src/tp03/ej08.rs:32:8
[INFO] [stdout]    |
[INFO] [stdout] 32 | pub fn compare_genre(genero1: &Genero, genero2: &Genero) -> bool {
[INFO] [stdout]    |        ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `compare` is never used
[INFO] [stdout]   --> src/tp03/ej08.rs:43:8
[INFO] [stdout]    |
[INFO] [stdout] 43 | pub fn compare (cancion1: &Cancion, cancion2: &Cancion) -> bool {
[INFO] [stdout]    |        ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple associated items are never used
[INFO] [stdout]    --> src/tp03/ej08.rs:51:8
[INFO] [stdout]     |
[INFO] [stdout]  50 | impl PlayList {
[INFO] [stdout]     | ------------- associated items in this implementation
[INFO] [stdout]  51 |     fn new(nombre: String) -> PlayList {
[INFO] [stdout]     |        ^^^
[INFO] [stdout] ...
[INFO] [stdout]  58 |     fn agregar_cancion(&mut self, cancion: &Cancion) {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  62 |     fn eliminar_cancion(&mut self, cancion: &Cancion) {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  77 |     fn mover_cancion(&mut self, cancion: &Cancion, posicion_nueva: u32){
[INFO] [stdout]     |        ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  97 |     fn buscar_cancion_por_nombre(&self, nombre: String) -> Option<Cancion> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 106 |     fn obtener_canciones_por_genero(&self, genero: Genero) -> Vec<Cancion> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 117 |     fn obtener_canciones_por_artista(&self, artista: String) -> Vec<Cancion> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 129 |     fn modificar_titulo_playlist(&mut self, titulo_nuevo: String) {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 133 |     fn eliminar_todas_las_canciones(&mut self) {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `TipoAnimal` is never used
[INFO] [stdout]  --> src/tp03/ej09.rs:7:6
[INFO] [stdout]   |
[INFO] [stdout] 7 | enum TipoAnimal {
[INFO] [stdout]   |      ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Veterinaria` is never constructed
[INFO] [stdout]   --> src/tp03/ej09.rs:14:8
[INFO] [stdout]    |
[INFO] [stdout] 14 | struct Veterinaria {
[INFO] [stdout]    |        ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Atencion` is never constructed
[INFO] [stdout]   --> src/tp03/ej09.rs:23:8
[INFO] [stdout]    |
[INFO] [stdout] 23 | struct Atencion {
[INFO] [stdout]    |        ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Mascota` is never constructed
[INFO] [stdout]   --> src/tp03/ej09.rs:31:8
[INFO] [stdout]    |
[INFO] [stdout] 31 | struct Mascota {
[INFO] [stdout]    |        ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Dueño` is never constructed
[INFO] [stdout]   --> src/tp03/ej09.rs:39:8
[INFO] [stdout]    |
[INFO] [stdout] 39 | struct Dueño {
[INFO] [stdout]    |        ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `compare_owners` is never used
[INFO] [stdout]   --> src/tp03/ej09.rs:45:8
[INFO] [stdout]    |
[INFO] [stdout] 45 | pub fn compare_owners(owner1: &Dueño, owner2: &Dueño) -> bool {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `compare_type` is never used
[INFO] [stdout]   --> src/tp03/ej09.rs:51:8
[INFO] [stdout]    |
[INFO] [stdout] 51 | pub fn compare_type(type1: &TipoAnimal, type2: &TipoAnimal)  -> bool{
[INFO] [stdout]    |        ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `compare_pets` is never used
[INFO] [stdout]   --> src/tp03/ej09.rs:61:8
[INFO] [stdout]    |
[INFO] [stdout] 61 | pub fn compare_pets (mascota1: &Mascota, mascota2: &Mascota) -> bool {
[INFO] [stdout]    |        ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `compare_fecha` is never used
[INFO] [stdout]   --> src/tp03/ej09.rs:68:4
[INFO] [stdout]    |
[INFO] [stdout] 68 | fn compare_fecha(fecha1: &Option<Fecha>, fecha2: &Option<Fecha>) -> bool {
[INFO] [stdout]    |    ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `compare_atencion` is never used
[INFO] [stdout]   --> src/tp03/ej09.rs:78:8
[INFO] [stdout]    |
[INFO] [stdout] 78 | pub fn compare_atencion(atencion1: &Atencion, atencion2: &Atencion) -> bool {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple associated items are never used
[INFO] [stdout]    --> src/tp03/ej09.rs:86:8
[INFO] [stdout]     |
[INFO] [stdout]  85 | impl Veterinaria {
[INFO] [stdout]     | ---------------- associated items in this implementation
[INFO] [stdout]  86 |     fn new(nombre: String, direccion: String, id: i32) -> Veterinaria {
[INFO] [stdout]     |        ^^^
[INFO] [stdout] ...
[INFO] [stdout]  96 |     fn agregar_nueva_mascota(&mut self, mascota: Mascota, fecha: Option<Fecha>) {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 107 |     fn agregar_mascota_maxima_prioridad(&mut self, mascota: Mascota, fecha: Option<Fecha>) {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 118 |     fn atender_mascota(&mut self) -> Option<Mascota>{
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 125 |     fn eliminar_mascota(&mut self, mascota: Mascota) {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 140 |     fn registrar_atencion(&mut self, tratamiento: String, diagnostico: String, fecha: Option<Fecha>) {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 153 |     fn buscar_atencion(&self, nombre_mascota: String, nombre_dueño: String, telefono: u32) -> Option<Atencion> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 162 |     fn modificar_diagnostico(&mut self, diagnostico_nuevo: String, atencion: &Atencion) {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 177 |     fn modificar_fecha(&mut self, fecha_nueva: Option<Fecha>, atencion: &Atencion) {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 192 |     fn eliminar_atencion (&mut self, atencion: &Atencion) {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `Genero` is never used
[INFO] [stdout]  --> src/tp03/ej10.rs:5:6
[INFO] [stdout]   |
[INFO] [stdout] 5 | enum Genero {
[INFO] [stdout]   |      ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `EstadoPrestamo` is never used
[INFO] [stdout]   --> src/tp03/ej10.rs:13:6
[INFO] [stdout]    |
[INFO] [stdout] 13 | enum EstadoPrestamo {
[INFO] [stdout]    |      ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Biblioteca` is never constructed
[INFO] [stdout]   --> src/tp03/ej10.rs:19:8
[INFO] [stdout]    |
[INFO] [stdout] 19 | struct Biblioteca {
[INFO] [stdout]    |        ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Libro` is never constructed
[INFO] [stdout]   --> src/tp03/ej10.rs:27:8
[INFO] [stdout]    |
[INFO] [stdout] 27 | struct Libro {
[INFO] [stdout]    |        ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Prestamo` is never constructed
[INFO] [stdout]   --> src/tp03/ej10.rs:37:8
[INFO] [stdout]    |
[INFO] [stdout] 37 | struct Prestamo {
[INFO] [stdout]    |        ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Cliente` is never constructed
[INFO] [stdout]   --> src/tp03/ej10.rs:46:8
[INFO] [stdout]    |
[INFO] [stdout] 46 | struct Cliente {
[INFO] [stdout]    |        ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `no_devolvio` is never used
[INFO] [stdout]   --> src/tp03/ej10.rs:52:8
[INFO] [stdout]    |
[INFO] [stdout] 52 | pub fn no_devolvio (estado: &EstadoPrestamo) -> bool {
[INFO] [stdout]    |        ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `compare_clientes` is never used
[INFO] [stdout]   --> src/tp03/ej10.rs:59:8
[INFO] [stdout]    |
[INFO] [stdout] 59 | pub fn compare_clientes (cliente1: &Cliente, cliente2: &Cliente) -> bool {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple methods are never used
[INFO] [stdout]    --> src/tp03/ej10.rs:66:8
[INFO] [stdout]     |
[INFO] [stdout]  65 | impl Biblioteca {
[INFO] [stdout]     | --------------- methods in this implementation
[INFO] [stdout]  66 |     fn obtener_cantidad_copias (&self, libro: &Libro) -> u32 {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  74 |     fn decrementar_cantidad_copias (&mut self, libro: &Libro) {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  80 |     fn incrementar_cantidad_copias (&mut self, libro: &Libro) {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  86 |     fn contar_prestamos_cliente (&self, cliente: &Cliente) -> u32 {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  97 |     fn realizar_prestamo (&mut self, libro: &Libro, cliente: &Cliente) -> bool {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 116 |     fn prestamos_vencer(&self, cant_dias: u32, fecha_actual: &Fecha) -> Vec<Prestamo> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 137 |     fn prestamos_vencidos(&self, fecha_actual: &Fecha) -> Vec<Prestamo> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 150 |     fn buscar_prestamo (&self, libro: &Libro, cliente: &Cliente) -> Option<Prestamo> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 159 |     fn devolver_libro (&mut self, libro: &Libro, cliente: &Cliente) {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Examen` is never constructed
[INFO] [stdout]  --> src/tp03/julieta_murias_v2.rs:1:8
[INFO] [stdout]   |
[INFO] [stdout] 1 | struct Examen {
[INFO] [stdout]   |        ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Estudiante` is never constructed
[INFO] [stdout]  --> src/tp03/julieta_murias_v2.rs:6:8
[INFO] [stdout]   |
[INFO] [stdout] 6 | struct Estudiante {
[INFO] [stdout]   |        ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Informe` is never constructed
[INFO] [stdout]   --> src/tp03/julieta_murias_v2.rs:13:8
[INFO] [stdout]    |
[INFO] [stdout] 13 | struct Informe {
[INFO] [stdout]    |        ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `obtener_materia_calificacion_alta` is never used
[INFO] [stdout]   --> src/tp03/julieta_murias_v2.rs:24:8
[INFO] [stdout]    |
[INFO] [stdout] 24 | pub fn obtener_materia_calificacion_alta(examenes: &Vec<Examen>) -> String {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `obtener_materia_calificacion_baja` is never used
[INFO] [stdout]   --> src/tp03/julieta_murias_v2.rs:44:8
[INFO] [stdout]    |
[INFO] [stdout] 44 | pub fn obtener_materia_calificacion_baja(examenes: &Vec<Examen>) -> String {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `new` is never used
[INFO] [stdout]   --> src/tp03/julieta_murias_v2.rs:66:8
[INFO] [stdout]    |
[INFO] [stdout] 65 | impl Examen {
[INFO] [stdout]    | ----------- associated function in this implementation
[INFO] [stdout] 66 |     fn new(nombre_materia: String, nota: f64) -> Examen {
[INFO] [stdout]    |        ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new`, `obtener_promedio`, `obtener_calificacion_mas_alta`, `obtener_calificacion_mas_baja`, and `generar_informe` are never used
[INFO] [stdout]    --> src/tp03/julieta_murias_v2.rs:75:8
[INFO] [stdout]     |
[INFO] [stdout]  74 | impl Estudiante {
[INFO] [stdout]     | --------------- associated items in this implementation
[INFO] [stdout]  75 |     fn new(nombre: String, id: i32) -> Estudiante {
[INFO] [stdout]     |        ^^^
[INFO] [stdout] ...
[INFO] [stdout]  83 |     fn obtener_promedio(&self) -> f64 {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  98 |      fn obtener_calificacion_mas_alta(&self) -> f64 {
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 114 |      fn obtener_calificacion_mas_baja(&self) -> f64 {
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 130 |      fn generar_informe (&self) -> Option<Informe> {
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait `Primo` is never used
[INFO] [stdout]  --> src/tp04/ej01.rs:1:11
[INFO] [stdout]   |
[INFO] [stdout] 1 | pub trait Primo {
[INFO] [stdout]   |           ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `contar_primos` is never used
[INFO] [stdout]   --> src/tp04/ej01.rs:21:8
[INFO] [stdout]    |
[INFO] [stdout] 21 | pub fn contar_primos(numeros: &Vec<i32>) -> u32 {    
[INFO] [stdout]    |        ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Persona` is never constructed
[INFO] [stdout]  --> src/tp04/ej02.rs:2:8
[INFO] [stdout]   |
[INFO] [stdout] 2 | struct Persona <'a>{
[INFO] [stdout]   |        ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait `PersonaOps` is never used
[INFO] [stdout]   --> src/tp04/ej02.rs:13:7
[INFO] [stdout]    |
[INFO] [stdout] 13 | trait PersonaOps <'a> {
[INFO] [stdout]    |       ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `compare` is never used
[INFO] [stdout]    --> src/tp04/ej02.rs:109:8
[INFO] [stdout]     |
[INFO] [stdout] 109 | pub fn compare (person1: Persona, person2: Persona) -> bool {
[INFO] [stdout]     |        ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `TipoSuscripcion` is never used
[INFO] [stdout]  --> src/tp04/ej03.rs:4:6
[INFO] [stdout]   |
[INFO] [stdout] 4 | enum TipoSuscripcion {
[INFO] [stdout]   |      ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `costo_mensual`, `upgrade`, `downgrade`, `soy_basic`, `soy_clasic`, and `soy_super` are never used
[INFO] [stdout]   --> src/tp04/ej03.rs:23:8
[INFO] [stdout]    |
[INFO] [stdout] 22 | impl TipoSuscripcion {
[INFO] [stdout]    | -------------------- methods in this implementation
[INFO] [stdout] 23 |     fn costo_mensual(&self) -> f64 {
[INFO] [stdout]    |        ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 31 |     fn upgrade(&self) -> Option<TipoSuscripcion>{
[INFO] [stdout]    |        ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 39 |     fn downgrade(&self) -> Option<TipoSuscripcion> {
[INFO] [stdout]    |        ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 48 |     fn soy_basic(&self) -> bool {
[INFO] [stdout]    |        ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 55 |     fn soy_clasic(&self) -> bool {
[INFO] [stdout]    |        ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 62 |     fn soy_super(&self) -> bool {
[INFO] [stdout]    |        ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Suscripcion` is never constructed
[INFO] [stdout]   --> src/tp04/ej03.rs:71:8
[INFO] [stdout]    |
[INFO] [stdout] 71 | struct Suscripcion {
[INFO] [stdout]    |        ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new`, `activar_suscripcion`, `desactivar_suscripcion`, `upgrade`, and `downgrade` are never used
[INFO] [stdout]    --> src/tp04/ej03.rs:79:8
[INFO] [stdout]     |
[INFO] [stdout]  78 | impl Suscripcion {
[INFO] [stdout]     | ---------------- associated items in this implementation
[INFO] [stdout]  79 |     fn new(tipo: TipoSuscripcion, duracion_meses: u8, fecha_inicio: String) -> Suscripcion {
[INFO] [stdout]     |        ^^^
[INFO] [stdout] ...
[INFO] [stdout]  88 |     fn activar_suscripcion(&mut self) {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  92 |     fn desactivar_suscripcion(&mut self) {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  96 |     fn upgrade(&mut self) -> Result<(), String> {
[INFO] [stdout]     |        ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 106 |     fn downgrade(&mut self) -> Result<(), String> {
[INFO] [stdout]     |        ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `MedioPago` is never used
[INFO] [stdout]    --> src/tp04/ej03.rs:121:6
[INFO] [stdout]     |
[INFO] [stdout] 121 | enum MedioPago {
[INFO] [stdout]     |      ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `to_string` is never used
[INFO] [stdout]    --> src/tp04/ej03.rs:138:8
[INFO] [stdout]     |
[INFO] [stdout] 137 | impl MedioPago {
[INFO] [stdout]     | -------------- method in this implementation
[INFO] [stdout] 138 |     fn to_string(&self) -> String {
[INFO] [stdout]     |        ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Usuario` is never constructed
[INFO] [stdout]    --> src/tp04/ej03.rs:150:8
[INFO] [stdout]     |
[INFO] [stdout] 150 | struct Usuario {
[INFO] [stdout]     |        ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple methods are never used
[INFO] [stdout]    --> src/tp04/ej03.rs:161:8
[INFO] [stdout]     |
[INFO] [stdout] 160 | impl Usuario {
[INFO] [stdout]     | ------------ methods in this implementation
[INFO] [stdout] 161 |     fn agregar_suscripcion(&mut self, suscripcion: Suscripcion) {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 166 |     fn obtener_suscripcion_activa(&self) -> Option<&Suscripcion> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 170 |     fn obtener_suscripcion_activa_mutable(&mut self) -> Option<&mut Suscripcion> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 174 |     fn cancelar_suscripcion(&mut self) -> Result<(), String> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 184 |     fn tiene_suscripcion_activa(&self) -> bool {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 188 |     fn upgrade_suscripcion(&mut self) -> Result<(), String> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 198 |     fn downgrade_suscripcion(&mut self) -> Result<(), String> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `StreamingRust` is never constructed
[INFO] [stdout]    --> src/tp04/ej03.rs:210:8
[INFO] [stdout]     |
[INFO] [stdout] 210 | struct StreamingRust {
[INFO] [stdout]     |        ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple associated items are never used
[INFO] [stdout]    --> src/tp04/ej03.rs:216:12
[INFO] [stdout]     |
[INFO] [stdout] 214 | impl StreamingRust {
[INFO] [stdout]     | ------------------ associated items in this implementation
[INFO] [stdout] 215 |
[INFO] [stdout] 216 |     pub fn crear_plataforma() -> StreamingRust {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 222 |     pub fn crear_usuario(&mut self, suscripcion: &Suscripcion, medio_pago: &MedioPago, id: u32, username: String, nombre: String, a...
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 242 |     pub fn upgrade_suscripcion(&mut self, usuario: &mut Usuario) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 249 |     pub fn downgrade_suscripcion(&mut self, usuario: &mut Usuario) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 256 |     pub fn cancelar_suscripcion(&mut self, usuario: &mut Usuario) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 263 |     pub fn suscripcion_mas_contratada_activos(&self) -> Option<(TipoSuscripcion, u32)> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 291 |     pub fn suscripcion_mas_contratada(&self) -> Option<(TipoSuscripcion, u32)> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 319 |     pub fn medio_pago_mas_usado_activos(&self) -> Option<(String, u32)> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 342 |     pub fn medio_pago_mas_usado(&self) -> Option<(String, u32)> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Producto` is never constructed
[INFO] [stdout]  --> src/tp04/julieta_murias_e2_v2.rs:6:8
[INFO] [stdout]   |
[INFO] [stdout] 6 | struct Producto {
[INFO] [stdout]   |        ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `Categoria` is never used
[INFO] [stdout]   --> src/tp04/julieta_murias_e2_v2.rs:14:6
[INFO] [stdout]    |
[INFO] [stdout] 14 | enum Categoria {
[INFO] [stdout]    |      ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `DatosPersona` is never constructed
[INFO] [stdout]   --> src/tp04/julieta_murias_e2_v2.rs:35:8
[INFO] [stdout]    |
[INFO] [stdout] 35 | struct DatosPersona {
[INFO] [stdout]    |        ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `F64Wrapper` is never constructed
[INFO] [stdout]   --> src/tp04/julieta_murias_e2_v2.rs:43:8
[INFO] [stdout]    |
[INFO] [stdout] 43 | struct F64Wrapper(f64); //F64Wrapper is a simple struct that contains a single field of type f64.
[INFO] [stdout]    |        ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Vendedor` is never constructed
[INFO] [stdout]   --> src/tp04/julieta_murias_e2_v2.rs:56:8
[INFO] [stdout]    |
[INFO] [stdout] 56 | struct Vendedor {
[INFO] [stdout]    |        ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Cliente` is never constructed
[INFO] [stdout]   --> src/tp04/julieta_murias_e2_v2.rs:64:8
[INFO] [stdout]    |
[INFO] [stdout] 64 | struct Cliente {
[INFO] [stdout]    |        ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `VentaProducto` is never constructed
[INFO] [stdout]   --> src/tp04/julieta_murias_e2_v2.rs:71:8
[INFO] [stdout]    |
[INFO] [stdout] 71 | struct VentaProducto {
[INFO] [stdout]    |        ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Venta` is never constructed
[INFO] [stdout]   --> src/tp04/julieta_murias_e2_v2.rs:77:8
[INFO] [stdout]    |
[INFO] [stdout] 77 | struct Venta {
[INFO] [stdout]    |        ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `MedioPago` is never used
[INFO] [stdout]   --> src/tp04/julieta_murias_e2_v2.rs:86:6
[INFO] [stdout]    |
[INFO] [stdout] 86 | enum MedioPago {
[INFO] [stdout]    |      ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `SistemaVentas` is never constructed
[INFO] [stdout]   --> src/tp04/julieta_murias_e2_v2.rs:95:8
[INFO] [stdout]    |
[INFO] [stdout] 95 | struct SistemaVentas {
[INFO] [stdout]    |        ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `ReportePorCategoria` is never constructed
[INFO] [stdout]    --> src/tp04/julieta_murias_e2_v2.rs:101:8
[INFO] [stdout]     |
[INFO] [stdout] 101 | struct ReportePorCategoria {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `ReportePorVendedor` is never constructed
[INFO] [stdout]    --> src/tp04/julieta_murias_e2_v2.rs:105:8
[INFO] [stdout]     |
[INFO] [stdout] 105 | struct ReportePorVendedor {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple associated items are never used
[INFO] [stdout]    --> src/tp04/julieta_murias_e2_v2.rs:110:12
[INFO] [stdout]     |
[INFO] [stdout] 109 | impl SistemaVentas {
[INFO] [stdout]     | ------------------ associated items in this implementation
[INFO] [stdout] 110 |     pub fn new() -> SistemaVentas {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 118 |     pub fn crear_venta(&mut self, fecha: String, cliente: &Cliente, vendedor: &Vendedor, productos: Vec<VentaProducto>, medio_pago:...
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 131 |     pub fn obtener_porcentaje_descuento(&self, categoria: &Categoria) -> f64 {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 140 |     pub fn obtener_descuento_suscripcion(&self) -> f64 {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 144 |     pub fn precio_final_venta(&self, venta: &Venta) -> f64 {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 171 |     fn reporte_por_vendedor(&self) -> ReportePorVendedor {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 199 |     fn reporte_por_categoria(&self) -> ReportePorCategoria {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Informe` is never constructed
[INFO] [stdout]    --> src/tp04/julieta_murias_e2_v2.rs:234:8
[INFO] [stdout]     |
[INFO] [stdout] 234 | struct Informe {
[INFO] [stdout]     |        ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `VentaInforme` is never constructed
[INFO] [stdout]    --> src/tp04/julieta_murias_e2_v2.rs:240:8
[INFO] [stdout]     |
[INFO] [stdout] 240 | struct VentaInforme {
[INFO] [stdout]     |        ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `get_historial_ventas` and `ordenar_ventas_por_fecha` are never used
[INFO] [stdout]    --> src/tp04/julieta_murias_e2_v2.rs:248:12
[INFO] [stdout]     |
[INFO] [stdout] 247 | impl SistemaVentas {
[INFO] [stdout]     | ------------------ methods in this implementation
[INFO] [stdout] 248 |     pub fn get_historial_ventas(&self, id: u32, categoria: Categoria) -> Option<Informe> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 319 |     pub fn ordenar_ventas_por_fecha(&self, ventas: &mut Vec<VentaInforme>) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `Result` that must be used
[INFO] [stdout]    --> src/tp04/ej03.rs:191:17
[INFO] [stdout]     |
[INFO] [stdout] 191 |                 suscripcion.upgrade();
[INFO] [stdout]     |                 ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: this `Result` may be an `Err` variant, which should be handled
[INFO] [stdout]     = note: `#[warn(unused_must_use)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]     |
[INFO] [stdout] 191 |                 let _ = suscripcion.upgrade();
[INFO] [stdout]     |                 +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `Result` that must be used
[INFO] [stdout]    --> src/tp04/ej03.rs:201:17
[INFO] [stdout]     |
[INFO] [stdout] 201 |                 suscripcion.downgrade();
[INFO] [stdout]     |                 ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: this `Result` may be an `Err` variant, which should be handled
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]     |
[INFO] [stdout] 201 |                 let _ = suscripcion.downgrade();
[INFO] [stdout]     |                 +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `Result` that must be used
[INFO] [stdout]    --> src/tp04/ej03.rs:245:13
[INFO] [stdout]     |
[INFO] [stdout] 245 |             user.upgrade_suscripcion(); //Update subscription.
[INFO] [stdout]     |             ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: this `Result` may be an `Err` variant, which should be handled
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]     |
[INFO] [stdout] 245 |             let _ = user.upgrade_suscripcion(); //Update subscription.
[INFO] [stdout]     |             +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `Result` that must be used
[INFO] [stdout]    --> src/tp04/ej03.rs:252:13
[INFO] [stdout]     |
[INFO] [stdout] 252 |             user.downgrade_suscripcion(); //Downgrade subscription.
[INFO] [stdout]     |             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: this `Result` may be an `Err` variant, which should be handled
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]     |
[INFO] [stdout] 252 |             let _ = user.downgrade_suscripcion(); //Downgrade subscription.
[INFO] [stdout]     |             +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `Result` that must be used
[INFO] [stdout]    --> src/tp04/ej03.rs:258:13
[INFO] [stdout]     |
[INFO] [stdout] 258 |             user.cancelar_suscripcion(); //Downgrade subscription.
[INFO] [stdout]     |             ^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: this `Result` may be an `Err` variant, which should be handled
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]     |
[INFO] [stdout] 258 |             let _ = user.cancelar_suscripcion(); //Downgrade subscription.
[INFO] [stdout]     |             +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]     Finished `dev` profile [unoptimized + debuginfo] target(s) in 1m 40s
[INFO] running `Command { std: "docker" "inspect" "80217ab1218eb1fe9770f9896021d989d3c0cfe7ac723977eeb9dfa2eb72b160", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "80217ab1218eb1fe9770f9896021d989d3c0cfe7ac723977eeb9dfa2eb72b160", kill_on_drop: false }`
[INFO] [stdout] 80217ab1218eb1fe9770f9896021d989d3c0cfe7ac723977eeb9dfa2eb72b160
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-6-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-6-tc1/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=forbid" "-e" "RUSTDOCFLAGS=--cap-lints=forbid" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:d429b63d4308055ea97f60fb1d3dfca48854a00942f1bd2ad806beaf015945ec" "/opt/rustwide/cargo-home/bin/cargo" "+1f7f8ea0721a3b1eb73e6c6d25cccb371434b320" "test" "--frozen" "--no-run" "--message-format=json", kill_on_drop: false }`
[INFO] [stdout] dd79666d33d8107c812eb12fd7a602d0536e788fc2e2a12236725c0c840c1474
[INFO] running `Command { std: "docker" "start" "-a" "dd79666d33d8107c812eb12fd7a602d0536e788fc2e2a12236725c0c840c1474", kill_on_drop: false }`
[INFO] [stderr] warning: the cargo feature `edition2024` has been stabilized in the 1.85 release and is no longer necessary to be listed in the manifest
[INFO] [stderr]   See https://doc.rust-lang.org/nightly/cargo/reference/manifest.html#the-edition-field for more information about using this feature.
[INFO] [stderr]    Compiling seminario-rust v0.1.0 (/opt/rustwide/workdir)
[INFO] [stdout] warning: unnecessary parentheses around `if` condition
[INFO] [stdout]   --> src/tp03/ej08.rs:99:16
[INFO] [stdout]    |
[INFO] [stdout] 99 |             if (song.titulo == nombre) {
[INFO] [stdout]    |                ^                     ^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_parens)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]    |
[INFO] [stdout] 99 -             if (song.titulo == nombre) {
[INFO] [stdout] 99 +             if song.titulo == nombre {
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around pattern
[INFO] [stdout]   --> src/tp03/ej10.rs:54:9
[INFO] [stdout]    |
[INFO] [stdout] 54 |         (EstadoPrestamo::EnPrestamo) => true,
[INFO] [stdout]    |         ^                          ^
[INFO] [stdout]    |
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]    |
[INFO] [stdout] 54 -         (EstadoPrestamo::EnPrestamo) => true,
[INFO] [stdout] 54 +         EstadoPrestamo::EnPrestamo  => true,
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around pattern
[INFO] [stdout]    --> src/tp03/ej10.rs:574:17
[INFO] [stdout]     |
[INFO] [stdout] 574 |                 (EstadoPrestamo::Devuelto) => true,
[INFO] [stdout]     |                 ^                        ^
[INFO] [stdout]     |
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]     |
[INFO] [stdout] 574 -                 (EstadoPrestamo::Devuelto) => true,
[INFO] [stdout] 574 +                 EstadoPrestamo::Devuelto  => true,
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::ptr::eq`
[INFO] [stdout]  --> src/tp04/ej03.rs:1:5
[INFO] [stdout]   |
[INFO] [stdout] 1 | use std::ptr::eq;
[INFO] [stdout]   |     ^^^^^^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `core::panic`
[INFO] [stdout]  --> src/main.rs:8:5
[INFO] [stdout]   |
[INFO] [stdout] 8 | use core::panic;
[INFO] [stdout]   |     ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]   --> src/tp03/ej01.rs:39:9
[INFO] [stdout]    |
[INFO] [stdout] 39 |     let mut me_without_direction = Persona::new (19, String::from("Julieta"), None);
[INFO] [stdout]    |         ----^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |         |
[INFO] [stdout]    |         help: remove this `mut`
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_mut)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `message1`
[INFO] [stdout]   --> src/tp03/ej01.rs:42:9
[INFO] [stdout]    |
[INFO] [stdout] 42 |     let message1 = me_with_direction.to_string();
[INFO] [stdout]    |         ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_message1`
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `days_in_current_month` is never read
[INFO] [stdout]   --> src/tp03/ej03.rs:76:41
[INFO] [stdout]    |
[INFO] [stdout] 76 |         let mut days_in_current_month = days_in_month[self.mes as usize];
[INFO] [stdout]    |                                         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = help: maybe it is overwritten before being read?
[INFO] [stdout]    = note: `#[warn(unused_assignments)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `days_in_current_month` is never read
[INFO] [stdout]   --> src/tp03/ej03.rs:79:13
[INFO] [stdout]    |
[INFO] [stdout] 79 |             days_in_current_month = 29;
[INFO] [stdout]    |             ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = help: maybe it is overwritten before being read?
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/tp03/ej03.rs:133:13
[INFO] [stdout]     |
[INFO] [stdout] 133 |         let mut date1 = Fecha {
[INFO] [stdout]     |             ----^^^^^
[INFO] [stdout]     |             |
[INFO] [stdout]     |             help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/tp03/ej03.rs:140:13
[INFO] [stdout]     |
[INFO] [stdout] 140 |         let mut date2 = Fecha::new(21, 13, 2024);
[INFO] [stdout]     |             ----^^^^^
[INFO] [stdout]     |             |
[INFO] [stdout]     |             help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/tp03/ej03.rs:146:13
[INFO] [stdout]     |
[INFO] [stdout] 146 |         let mut date1 = Fecha {
[INFO] [stdout]     |             ----^^^^^
[INFO] [stdout]     |             |
[INFO] [stdout]     |             help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/tp03/ej03.rs:153:13
[INFO] [stdout]     |
[INFO] [stdout] 153 |         let mut date2 = Fecha::new(21, 12, 2024);
[INFO] [stdout]     |             ----^^^^^
[INFO] [stdout]     |             |
[INFO] [stdout]     |             help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/tp03/julieta_murias_v1.rs:183:13
[INFO] [stdout]     |
[INFO] [stdout] 183 |         let mut student= Estudiante::new(String::from("Pepe"), 123);
[INFO] [stdout]     |             ----^^^^^^^
[INFO] [stdout]     |             |
[INFO] [stdout]     |             help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/tp03/julieta_murias_v1.rs:198:13
[INFO] [stdout]     |
[INFO] [stdout] 198 |         let mut student2= Estudiante::new(String::from("Pepe"), 999);
[INFO] [stdout]     |             ----^^^^^^^^
[INFO] [stdout]     |             |
[INFO] [stdout]     |             help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/tp03/julieta_murias_v1.rs:210:13
[INFO] [stdout]     |
[INFO] [stdout] 210 |         let mut student2= Estudiante::new(String::from("Pepe"), 999);
[INFO] [stdout]     |             ----^^^^^^^^
[INFO] [stdout]     |             |
[INFO] [stdout]     |             help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/tp03/julieta_murias_v1.rs:222:13
[INFO] [stdout]     |
[INFO] [stdout] 222 |         let mut student2= Estudiante::new(String::from("Pepe"), 999);
[INFO] [stdout]     |             ----^^^^^^^^
[INFO] [stdout]     |             |
[INFO] [stdout]     |             help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/tp03/ej08.rs:258:13
[INFO] [stdout]     |
[INFO] [stdout] 258 |         let mut jazz_songs: Vec<Cancion>;
[INFO] [stdout]     |             ----^^^^^^^^^^
[INFO] [stdout]     |             |
[INFO] [stdout]     |             help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/tp03/ej08.rs:263:13
[INFO] [stdout]     |
[INFO] [stdout] 263 |         let mut pop_songs= playlist.obtener_canciones_por_genero(Genero::POP);
[INFO] [stdout]     |             ----^^^^^^^^^
[INFO] [stdout]     |             |
[INFO] [stdout]     |             help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/tp03/ej08.rs:281:13
[INFO] [stdout]     |
[INFO] [stdout] 281 |         let mut pepa_songs: Vec<Cancion>;
[INFO] [stdout]     |             ----^^^^^^^^^^
[INFO] [stdout]     |             |
[INFO] [stdout]     |             help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/tp03/ej08.rs:286:13
[INFO] [stdout]     |
[INFO] [stdout] 286 |         let mut titi_songs= playlist.obtener_canciones_por_artista(String::from("titi"));
[INFO] [stdout]     |             ----^^^^^^^^^^
[INFO] [stdout]     |             |
[INFO] [stdout]     |             help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `esta_devuelto`
[INFO] [stdout]    --> src/tp03/ej10.rs:572:13
[INFO] [stdout]     |
[INFO] [stdout] 572 |         let esta_devuelto = {
[INFO] [stdout]     |             ^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_esta_devuelto`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/tp03/julieta_murias_v2.rs:183:13
[INFO] [stdout]     |
[INFO] [stdout] 183 |         let mut student= Estudiante::new(String::from("Pepe"), 123);
[INFO] [stdout]     |             ----^^^^^^^
[INFO] [stdout]     |             |
[INFO] [stdout]     |             help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/tp03/julieta_murias_v2.rs:198:13
[INFO] [stdout]     |
[INFO] [stdout] 198 |         let mut student2= Estudiante::new(String::from("Pepe"), 999);
[INFO] [stdout]     |             ----^^^^^^^^
[INFO] [stdout]     |             |
[INFO] [stdout]     |             help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/tp03/julieta_murias_v2.rs:210:13
[INFO] [stdout]     |
[INFO] [stdout] 210 |         let mut student2= Estudiante::new(String::from("Pepe"), 999);
[INFO] [stdout]     |             ----^^^^^^^^
[INFO] [stdout]     |             |
[INFO] [stdout]     |             help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/tp03/julieta_murias_v2.rs:222:13
[INFO] [stdout]     |
[INFO] [stdout] 222 |         let mut student2= Estudiante::new(String::from("Pepe"), 999);
[INFO] [stdout]     |             ----^^^^^^^^
[INFO] [stdout]     |             |
[INFO] [stdout]     |             help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `numero_tarjeta`
[INFO] [stdout]    --> src/tp04/ej03.rs:141:41
[INFO] [stdout]     |
[INFO] [stdout] 141 |             MedioPago::TarjetaCredito { numero_tarjeta } => String::from("TarjetaCredito"),
[INFO] [stdout]     |                                         ^^^^^^^^^^^^^^ help: try ignoring the field: `numero_tarjeta: _`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `cbu`
[INFO] [stdout]    --> src/tp04/ej03.rs:142:38
[INFO] [stdout]     |
[INFO] [stdout] 142 |             MedioPago::MercadoPago { cbu } => String::from("MercadoPago"),
[INFO] [stdout]     |                                      ^^^ help: try ignoring the field: `cbu: _`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `cuenta_destino`
[INFO] [stdout]    --> src/tp04/ej03.rs:143:48
[INFO] [stdout]     |
[INFO] [stdout] 143 |             MedioPago::TransferenciaBancaria { cuenta_destino, cuenta_origen } => String::from("TransferenciaBancaria"),
[INFO] [stdout]     |                                                ^^^^^^^^^^^^^^ help: try ignoring the field: `cuenta_destino: _`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `cuenta_origen`
[INFO] [stdout]    --> src/tp04/ej03.rs:143:64
[INFO] [stdout]     |
[INFO] [stdout] 143 |             MedioPago::TransferenciaBancaria { cuenta_destino, cuenta_origen } => String::from("TransferenciaBancaria"),
[INFO] [stdout]     |                                                                ^^^^^^^^^^^^^ help: try ignoring the field: `cuenta_origen: _`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `tipo_cripto`
[INFO] [stdout]    --> src/tp04/ej03.rs:144:33
[INFO] [stdout]     |
[INFO] [stdout] 144 |             MedioPago::Cripto { tipo_cripto } => String::from("Cripto"),
[INFO] [stdout]     |                                 ^^^^^^^^^^^ help: try ignoring the field: `tipo_cripto: _`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: irrefutable `if let` pattern
[INFO] [stdout]    --> src/tp04/ej03.rs:234:12
[INFO] [stdout]     |
[INFO] [stdout] 234 |         if let user_existe = self.usuarios.iter().find(|u| u.id == id) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: this pattern will always match, so the `if let` is useless
[INFO] [stdout]     = help: consider replacing the `if let` with a `let`
[INFO] [stdout]     = note: `#[warn(irrefutable_let_patterns)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `user_existe`
[INFO] [stdout]    --> src/tp04/ej03.rs:234:16
[INFO] [stdout]     |
[INFO] [stdout] 234 |         if let user_existe = self.usuarios.iter().find(|u| u.id == id) {
[INFO] [stdout]     |                ^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_user_existe`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `suscripcion`
[INFO] [stdout]    --> src/tp04/ej03.rs:352:50
[INFO] [stdout]     |
[INFO] [stdout] 352 |                 u.suscripciones.iter().for_each(|suscripcion| {
[INFO] [stdout]     |                                                  ^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_suscripcion`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/tp04/ej03.rs:412:13
[INFO] [stdout]     |
[INFO] [stdout] 412 |         let mut usuarios = vec![user0.clone()];
[INFO] [stdout]     |             ----^^^^^^^^
[INFO] [stdout]     |             |
[INFO] [stdout]     |             help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/tp04/ej03.rs:457:13
[INFO] [stdout]     |
[INFO] [stdout] 457 |         let mut user0 = Usuario {
[INFO] [stdout]     |             ----^^^^^
[INFO] [stdout]     |             |
[INFO] [stdout]     |             help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/tp04/ej03.rs:472:13
[INFO] [stdout]     |
[INFO] [stdout] 472 |         let mut user1 = Usuario {
[INFO] [stdout]     |             ----^^^^^
[INFO] [stdout]     |             |
[INFO] [stdout]     |             help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/tp04/ej03.rs:487:13
[INFO] [stdout]     |
[INFO] [stdout] 487 |         let mut user2 = Usuario {
[INFO] [stdout]     |             ----^^^^^
[INFO] [stdout]     |             |
[INFO] [stdout]     |             help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/tp04/ej03.rs:502:13
[INFO] [stdout]     |
[INFO] [stdout] 502 |         let mut user3 = Usuario {
[INFO] [stdout]     |             ----^^^^^
[INFO] [stdout]     |             |
[INFO] [stdout]     |             help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/tp04/ej03.rs:521:13
[INFO] [stdout]     |
[INFO] [stdout] 521 |         let mut usuarios = vec![user0.clone(), user1.clone(), user2.clone(), user3.clone()];
[INFO] [stdout]     |             ----^^^^^^^^
[INFO] [stdout]     |             |
[INFO] [stdout]     |             help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/tp04/ej03.rs:522:13
[INFO] [stdout]     |
[INFO] [stdout] 522 |         let mut plataforma = StreamingRust {usuarios};
[INFO] [stdout]     |             ----^^^^^^^^^^
[INFO] [stdout]     |             |
[INFO] [stdout]     |             help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `sistema_ventas`
[INFO] [stdout]    --> src/tp04/julieta_murias_e2_v2.rs:589:13
[INFO] [stdout]     |
[INFO] [stdout] 589 |         let mut sistema_ventas:SistemaVentas;
[INFO] [stdout]     |             ^^^^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_sistema_ventas`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `venta`
[INFO] [stdout]    --> src/tp04/julieta_murias_e2_v2.rs:692:13
[INFO] [stdout]     |
[INFO] [stdout] 692 | ...   let venta = sistema_ventas.crear_venta("1/1/2025".to_string(), &cliente, &vendedor, productos.clone(), MedioPago::Transferenc...
[INFO] [stdout]     |           ^^^^^ help: if this is intentional, prefix it with an underscore: `_venta`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]   --> src/main.rs:47:9
[INFO] [stdout]    |
[INFO] [stdout] 47 |     let mut var_ingresada: bool = match var_ingresada.trim().parse(){
[INFO] [stdout]    |         ----^^^^^^^^^^^^^
[INFO] [stdout]    |         |
[INFO] [stdout]    |         help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]   --> src/main.rs:55:9
[INFO] [stdout]    |
[INFO] [stdout] 55 |     let mut var_ingresada = var_ingresada && t;
[INFO] [stdout]    |         ----^^^^^^^^^^^^^
[INFO] [stdout]    |         |
[INFO] [stdout]    |         help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]   --> src/main.rs:58:9
[INFO] [stdout]    |
[INFO] [stdout] 58 |     let mut var_ingresada = var_ingresada || t;
[INFO] [stdout]    |         ----^^^^^^^^^^^^^
[INFO] [stdout]    |         |
[INFO] [stdout]    |         help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]   --> src/main.rs:89:9
[INFO] [stdout]    |
[INFO] [stdout] 89 |     let mut number :u32 = 2;
[INFO] [stdout]    |         ----^^^^^^
[INFO] [stdout]    |         |
[INFO] [stdout]    |         help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]   --> src/main.rs:97:9
[INFO] [stdout]    |
[INFO] [stdout] 97 |     let mut number_ingresado:u32 = match number_ingresado.trim().parse(){
[INFO] [stdout]    |         ----^^^^^^^^^^^^^^^^
[INFO] [stdout]    |         |
[INFO] [stdout]    |         help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/main.rs:105:9
[INFO] [stdout]     |
[INFO] [stdout] 105 |     let mut number = number + number_ingresado;
[INFO] [stdout]     |         ----^^^^^^
[INFO] [stdout]     |         |
[INFO] [stdout]     |         help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/main.rs:136:9
[INFO] [stdout]     |
[INFO] [stdout] 136 |     let mut caracter: char = caracter.trim().parse()
[INFO] [stdout]     |         ----^^^^^^^^
[INFO] [stdout]     |         |
[INFO] [stdout]     |         help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `suma_auxiliar` is never read
[INFO] [stdout]    --> src/main.rs:171:38
[INFO] [stdout]     |
[INFO] [stdout] 171 |         let mut suma_auxiliar: i32 = 0;
[INFO] [stdout]     |                                      ^
[INFO] [stdout]     |
[INFO] [stdout]     = help: maybe it is overwritten before being read?
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: type `julieta_murias_v1::Examen` is more private than the item `julieta_murias_v1::obtener_materia_calificacion_alta`
[INFO] [stdout]   --> src/tp03/julieta_murias_v1.rs:24:1
[INFO] [stdout]    |
[INFO] [stdout] 24 | pub fn obtener_materia_calificacion_alta(examenes: &Vec<Examen>) -> String {
[INFO] [stdout]    | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ function `julieta_murias_v1::obtener_materia_calificacion_alta` is reachable at visibility `pub(crate)`
[INFO] [stdout]    |
[INFO] [stdout] note: but type `julieta_murias_v1::Examen` is only usable at visibility `pub(self)`
[INFO] [stdout]   --> src/tp03/julieta_murias_v1.rs:1:1
[INFO] [stdout]    |
[INFO] [stdout]  1 | struct Examen {
[INFO] [stdout]    | ^^^^^^^^^^^^^
[INFO] [stdout]    = note: `#[warn(private_interfaces)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: type `julieta_murias_v1::Examen` is more private than the item `julieta_murias_v1::obtener_materia_calificacion_baja`
[INFO] [stdout]   --> src/tp03/julieta_murias_v1.rs:44:1
[INFO] [stdout]    |
[INFO] [stdout] 44 | pub fn obtener_materia_calificacion_baja(examenes: &Vec<Examen>) -> String {
[INFO] [stdout]    | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ function `julieta_murias_v1::obtener_materia_calificacion_baja` is reachable at visibility `pub(crate)`
[INFO] [stdout]    |
[INFO] [stdout] note: but type `julieta_murias_v1::Examen` is only usable at visibility `pub(self)`
[INFO] [stdout]   --> src/tp03/julieta_murias_v1.rs:1:1
[INFO] [stdout]    |
[INFO] [stdout]  1 | struct Examen {
[INFO] [stdout]    | ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: type `ej07::Color` is more private than the item `compare_colors`
[INFO] [stdout]   --> src/tp03/ej07.rs:29:1
[INFO] [stdout]    |
[INFO] [stdout] 29 | pub fn compare_colors(color1: &Color, color2: &Color) -> bool {
[INFO] [stdout]    | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ function `compare_colors` is reachable at visibility `pub(crate)`
[INFO] [stdout]    |
[INFO] [stdout] note: but type `ej07::Color` is only usable at visibility `pub(self)`
[INFO] [stdout]   --> src/tp03/ej07.rs:3:1
[INFO] [stdout]    |
[INFO] [stdout]  3 | enum Color {
[INFO] [stdout]    | ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: type `ej07::Auto` is more private than the item `ej07::compare`
[INFO] [stdout]   --> src/tp03/ej07.rs:41:1
[INFO] [stdout]    |
[INFO] [stdout] 41 | pub fn compare (auto1: &Auto, auto2: &Auto) -> bool {
[INFO] [stdout]    | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ function `ej07::compare` is reachable at visibility `pub(crate)`
[INFO] [stdout]    |
[INFO] [stdout] note: but type `ej07::Auto` is only usable at visibility `pub(self)`
[INFO] [stdout]   --> src/tp03/ej07.rs:12:1
[INFO] [stdout]    |
[INFO] [stdout] 12 | struct Auto {
[INFO] [stdout]    | ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: type `ej08::Genero` is more private than the item `compare_genre`
[INFO] [stdout]   --> src/tp03/ej08.rs:32:1
[INFO] [stdout]    |
[INFO] [stdout] 32 | pub fn compare_genre(genero1: &Genero, genero2: &Genero) -> bool {
[INFO] [stdout]    | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ function `compare_genre` is reachable at visibility `pub(crate)`
[INFO] [stdout]    |
[INFO] [stdout] note: but type `ej08::Genero` is only usable at visibility `pub(self)`
[INFO] [stdout]   --> src/tp03/ej08.rs:2:1
[INFO] [stdout]    |
[INFO] [stdout]  2 | enum Genero {
[INFO] [stdout]    | ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: type `ej08::Cancion` is more private than the item `ej08::compare`
[INFO] [stdout]   --> src/tp03/ej08.rs:43:1
[INFO] [stdout]    |
[INFO] [stdout] 43 | pub fn compare (cancion1: &Cancion, cancion2: &Cancion) -> bool {
[INFO] [stdout]    | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ function `ej08::compare` is reachable at visibility `pub(crate)`
[INFO] [stdout]    |
[INFO] [stdout] note: but type `ej08::Cancion` is only usable at visibility `pub(self)`
[INFO] [stdout]   --> src/tp03/ej08.rs:11:1
[INFO] [stdout]    |
[INFO] [stdout] 11 | struct Cancion {
[INFO] [stdout]    | ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: type `ej09::Dueño` is more private than the item `compare_owners`
[INFO] [stdout]   --> src/tp03/ej09.rs:45:1
[INFO] [stdout]    |
[INFO] [stdout] 45 | pub fn compare_owners(owner1: &Dueño, owner2: &Dueño) -> bool {
[INFO] [stdout]    | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ function `compare_owners` is reachable at visibility `pub(crate)`
[INFO] [stdout]    |
[INFO] [stdout] note: but type `ej09::Dueño` is only usable at visibility `pub(self)`
[INFO] [stdout]   --> src/tp03/ej09.rs:39:1
[INFO] [stdout]    |
[INFO] [stdout] 39 | struct Dueño {
[INFO] [stdout]    | ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: type `ej09::TipoAnimal` is more private than the item `compare_type`
[INFO] [stdout]   --> src/tp03/ej09.rs:51:1
[INFO] [stdout]    |
[INFO] [stdout] 51 | pub fn compare_type(type1: &TipoAnimal, type2: &TipoAnimal)  -> bool{
[INFO] [stdout]    | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ function `compare_type` is reachable at visibility `pub(crate)`
[INFO] [stdout]    |
[INFO] [stdout] note: but type `ej09::TipoAnimal` is only usable at visibility `pub(self)`
[INFO] [stdout]   --> src/tp03/ej09.rs:7:1
[INFO] [stdout]    |
[INFO] [stdout]  7 | enum TipoAnimal {
[INFO] [stdout]    | ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: type `ej09::Mascota` is more private than the item `compare_pets`
[INFO] [stdout]   --> src/tp03/ej09.rs:61:1
[INFO] [stdout]    |
[INFO] [stdout] 61 | pub fn compare_pets (mascota1: &Mascota, mascota2: &Mascota) -> bool {
[INFO] [stdout]    | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ function `compare_pets` is reachable at visibility `pub(crate)`
[INFO] [stdout]    |
[INFO] [stdout] note: but type `ej09::Mascota` is only usable at visibility `pub(self)`
[INFO] [stdout]   --> src/tp03/ej09.rs:31:1
[INFO] [stdout]    |
[INFO] [stdout] 31 | struct Mascota {
[INFO] [stdout]    | ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: type `Atencion` is more private than the item `compare_atencion`
[INFO] [stdout]   --> src/tp03/ej09.rs:78:1
[INFO] [stdout]    |
[INFO] [stdout] 78 | pub fn compare_atencion(atencion1: &Atencion, atencion2: &Atencion) -> bool {
[INFO] [stdout]    | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ function `compare_atencion` is reachable at visibility `pub(crate)`
[INFO] [stdout]    |
[INFO] [stdout] note: but type `Atencion` is only usable at visibility `pub(self)`
[INFO] [stdout]   --> src/tp03/ej09.rs:23:1
[INFO] [stdout]    |
[INFO] [stdout] 23 | struct Atencion {
[INFO] [stdout]    | ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: type `ej10::EstadoPrestamo` is more private than the item `no_devolvio`
[INFO] [stdout]   --> src/tp03/ej10.rs:52:1
[INFO] [stdout]    |
[INFO] [stdout] 52 | pub fn no_devolvio (estado: &EstadoPrestamo) -> bool {
[INFO] [stdout]    | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ function `no_devolvio` is reachable at visibility `pub(crate)`
[INFO] [stdout]    |
[INFO] [stdout] note: but type `ej10::EstadoPrestamo` is only usable at visibility `pub(self)`
[INFO] [stdout]   --> src/tp03/ej10.rs:13:1
[INFO] [stdout]    |
[INFO] [stdout] 13 | enum EstadoPrestamo {
[INFO] [stdout]    | ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: type `ej10::Cliente` is more private than the item `compare_clientes`
[INFO] [stdout]   --> src/tp03/ej10.rs:59:1
[INFO] [stdout]    |
[INFO] [stdout] 59 | pub fn compare_clientes (cliente1: &Cliente, cliente2: &Cliente) -> bool {
[INFO] [stdout]    | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ function `compare_clientes` is reachable at visibility `pub(crate)`
[INFO] [stdout]    |
[INFO] [stdout] note: but type `ej10::Cliente` is only usable at visibility `pub(self)`
[INFO] [stdout]   --> src/tp03/ej10.rs:46:1
[INFO] [stdout]    |
[INFO] [stdout] 46 | struct Cliente {
[INFO] [stdout]    | ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: type `julieta_murias_v2::Examen` is more private than the item `julieta_murias_v2::obtener_materia_calificacion_alta`
[INFO] [stdout]   --> src/tp03/julieta_murias_v2.rs:24:1
[INFO] [stdout]    |
[INFO] [stdout] 24 | pub fn obtener_materia_calificacion_alta(examenes: &Vec<Examen>) -> String {
[INFO] [stdout]    | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ function `julieta_murias_v2::obtener_materia_calificacion_alta` is reachable at visibility `pub(crate)`
[INFO] [stdout]    |
[INFO] [stdout] note: but type `julieta_murias_v2::Examen` is only usable at visibility `pub(self)`
[INFO] [stdout]   --> src/tp03/julieta_murias_v2.rs:1:1
[INFO] [stdout]    |
[INFO] [stdout]  1 | struct Examen {
[INFO] [stdout]    | ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: type `julieta_murias_v2::Examen` is more private than the item `julieta_murias_v2::obtener_materia_calificacion_baja`
[INFO] [stdout]   --> src/tp03/julieta_murias_v2.rs:44:1
[INFO] [stdout]    |
[INFO] [stdout] 44 | pub fn obtener_materia_calificacion_baja(examenes: &Vec<Examen>) -> String {
[INFO] [stdout]    | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ function `julieta_murias_v2::obtener_materia_calificacion_baja` is reachable at visibility `pub(crate)`
[INFO] [stdout]    |
[INFO] [stdout] note: but type `julieta_murias_v2::Examen` is only usable at visibility `pub(self)`
[INFO] [stdout]   --> src/tp03/julieta_murias_v2.rs:1:1
[INFO] [stdout]    |
[INFO] [stdout]  1 | struct Examen {
[INFO] [stdout]    | ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: type `tp04::ej02::Persona<'_>` is more private than the item `tp04::ej02::compare`
[INFO] [stdout]    --> src/tp04/ej02.rs:109:1
[INFO] [stdout]     |
[INFO] [stdout] 109 | pub fn compare (person1: Persona, person2: Persona) -> bool {
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ function `tp04::ej02::compare` is reachable at visibility `pub(crate)`
[INFO] [stdout]     |
[INFO] [stdout] note: but type `tp04::ej02::Persona<'_>` is only usable at visibility `pub(self)`
[INFO] [stdout]    --> src/tp04/ej02.rs:2:1
[INFO] [stdout]     |
[INFO] [stdout]   2 | struct Persona <'a>{
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `calcular_area` is never used
[INFO] [stdout]   --> src/tp03/ej04.rs:28:8
[INFO] [stdout]    |
[INFO] [stdout]  7 | impl Triangulo {
[INFO] [stdout]    | -------------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 28 |     fn calcular_area (&self) -> f64 {
[INFO] [stdout]    |        ^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `nombre` and `id` are never read
[INFO] [stdout]  --> src/tp03/ej05.rs:2:5
[INFO] [stdout]   |
[INFO] [stdout] 1 | struct Producto {
[INFO] [stdout]   |        -------- fields in this struct
[INFO] [stdout] 2 |     nombre: String,
[INFO] [stdout]   |     ^^^^^^
[INFO] [stdout] 3 |     precio_bruto: f64,
[INFO] [stdout] 4 |     id: u32,
[INFO] [stdout]   |     ^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple fields are never read
[INFO] [stdout]   --> src/tp03/julieta_murias_v1.rs:14:5
[INFO] [stdout]    |
[INFO] [stdout] 13 | struct Informe {
[INFO] [stdout]    |        ------- fields in this struct
[INFO] [stdout] 14 |     nombre: String,
[INFO] [stdout]    |     ^^^^^^
[INFO] [stdout] 15 |     id: i32,
[INFO] [stdout]    |     ^^
[INFO] [stdout] 16 |     cant_examenes_rendidos: u32,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 17 |     promedio: f64,
[INFO] [stdout]    |     ^^^^^^^^
[INFO] [stdout] 18 |     nota_baja: f64,
[INFO] [stdout]    |     ^^^^^^^^^
[INFO] [stdout] 19 |     materia_baja: String,
[INFO] [stdout]    |     ^^^^^^^^^^^^
[INFO] [stdout] 20 |     nota_alta: f64,
[INFO] [stdout]    |     ^^^^^^^^^
[INFO] [stdout] 21 |     materia_alta: String,
[INFO] [stdout]    |     ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variants `VERDE` and `AZUL` are never constructed
[INFO] [stdout]  --> src/tp03/ej07.rs:5:5
[INFO] [stdout]   |
[INFO] [stdout] 3 | enum Color {
[INFO] [stdout]   |      ----- variants in this enum
[INFO] [stdout] 4 |     ROJO,
[INFO] [stdout] 5 |     VERDE, 
[INFO] [stdout]   |     ^^^^^
[INFO] [stdout] 6 |     AZUL,
[INFO] [stdout]   |     ^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `Color` has a derived impl for the trait `Clone`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `nombre` and `direccion` are never read
[INFO] [stdout]   --> src/tp03/ej07.rs:21:5
[INFO] [stdout]    |
[INFO] [stdout] 20 | struct ConsecionarioAuto {
[INFO] [stdout]    |        ----------------- fields in this struct
[INFO] [stdout] 21 |     nombre: String,
[INFO] [stdout]    |     ^^^^^^
[INFO] [stdout] 22 |     direccion: String,
[INFO] [stdout]    |     ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variant `RAP` is never constructed
[INFO] [stdout]  --> src/tp03/ej08.rs:6:5
[INFO] [stdout]   |
[INFO] [stdout] 2 | enum Genero {
[INFO] [stdout]   |      ------ variant in this enum
[INFO] [stdout] ...
[INFO] [stdout] 6 |     RAP,
[INFO] [stdout]   |     ^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `Genero` has a derived impl for the trait `Clone`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variant `OTROS` is never constructed
[INFO] [stdout]   --> src/tp03/ej09.rs:11:5
[INFO] [stdout]    |
[INFO] [stdout]  7 | enum TipoAnimal {
[INFO] [stdout]    |      ---------- variant in this enum
[INFO] [stdout] ...
[INFO] [stdout] 11 |     OTROS,
[INFO] [stdout]    |     ^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `TipoAnimal` has a derived impl for the trait `Clone`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `nombre`, `direccion`, and `id` are never read
[INFO] [stdout]   --> src/tp03/ej09.rs:15:5
[INFO] [stdout]    |
[INFO] [stdout] 14 | struct Veterinaria {
[INFO] [stdout]    |        ----------- fields in this struct
[INFO] [stdout] 15 |     nombre: String,
[INFO] [stdout]    |     ^^^^^^
[INFO] [stdout] 16 |     direccion: String,
[INFO] [stdout]    |     ^^^^^^^^^
[INFO] [stdout] 17 |     id: i32,
[INFO] [stdout]    |     ^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `compare_atencion` is never used
[INFO] [stdout]   --> src/tp03/ej09.rs:78:8
[INFO] [stdout]    |
[INFO] [stdout] 78 | pub fn compare_atencion(atencion1: &Atencion, atencion2: &Atencion) -> bool {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `modificar_diagnostico`, `modificar_fecha`, and `eliminar_atencion` are never used
[INFO] [stdout]    --> src/tp03/ej09.rs:162:8
[INFO] [stdout]     |
[INFO] [stdout]  85 | impl Veterinaria {
[INFO] [stdout]     | ---------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 162 |     fn modificar_diagnostico(&mut self, diagnostico_nuevo: String, atencion: &Atencion) {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 177 |     fn modificar_fecha(&mut self, fecha_nueva: Option<Fecha>, atencion: &Atencion) {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 192 |     fn eliminar_atencion (&mut self, atencion: &Atencion) {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variant `Tecnico` is never constructed
[INFO] [stdout]  --> src/tp03/ej10.rs:8:5
[INFO] [stdout]   |
[INFO] [stdout] 5 | enum Genero {
[INFO] [stdout]   |      ------ variant in this enum
[INFO] [stdout] ...
[INFO] [stdout] 8 |     Tecnico,
[INFO] [stdout]   |     ^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `Genero` has a derived impl for the trait `Clone`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `nombre` and `direccion` are never read
[INFO] [stdout]   --> src/tp03/ej10.rs:20:5
[INFO] [stdout]    |
[INFO] [stdout] 19 | struct Biblioteca {
[INFO] [stdout]    |        ---------- fields in this struct
[INFO] [stdout] 20 |     nombre: String,
[INFO] [stdout]    |     ^^^^^^
[INFO] [stdout] 21 |     direccion: String,
[INFO] [stdout]    |     ^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `Biblioteca` has a derived impl for the trait `Clone`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `titulo`, `autor`, `numero_paginas`, and `genero` are never read
[INFO] [stdout]   --> src/tp03/ej10.rs:29:5
[INFO] [stdout]    |
[INFO] [stdout] 27 | struct Libro {
[INFO] [stdout]    |        ----- fields in this struct
[INFO] [stdout] 28 |     isbn: u32,
[INFO] [stdout] 29 |     titulo: String,
[INFO] [stdout]    |     ^^^^^^
[INFO] [stdout] 30 |     copias_disponiles: u32,
[INFO] [stdout] 31 |     autor: String,
[INFO] [stdout]    |     ^^^^^
[INFO] [stdout] 32 |     numero_paginas: u32,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^
[INFO] [stdout] 33 |     genero: Genero,
[INFO] [stdout]    |     ^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `Libro` has a derived impl for the trait `Clone`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `fecha_devolucion` is never read
[INFO] [stdout]   --> src/tp03/ej10.rs:41:5
[INFO] [stdout]    |
[INFO] [stdout] 37 | struct Prestamo {
[INFO] [stdout]    |        -------- field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 41 |     fecha_devolucion: Fecha, 
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `Prestamo` has a derived impl for the trait `Clone`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple fields are never read
[INFO] [stdout]   --> src/tp03/julieta_murias_v2.rs:14:5
[INFO] [stdout]    |
[INFO] [stdout] 13 | struct Informe {
[INFO] [stdout]    |        ------- fields in this struct
[INFO] [stdout] 14 |     nombre: String,
[INFO] [stdout]    |     ^^^^^^
[INFO] [stdout] 15 |     id: i32,
[INFO] [stdout]    |     ^^
[INFO] [stdout] 16 |     cant_examenes_rendidos: u32,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 17 |     promedio: f64,
[INFO] [stdout]    |     ^^^^^^^^
[INFO] [stdout] 18 |     nota_baja: f64,
[INFO] [stdout]    |     ^^^^^^^^^
[INFO] [stdout] 19 |     materia_baja: String,
[INFO] [stdout]    |     ^^^^^^^^^^^^
[INFO] [stdout] 20 |     nota_alta: f64,
[INFO] [stdout]    |     ^^^^^^^^^
[INFO] [stdout] 21 |     materia_alta: String,
[INFO] [stdout]    |     ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `costo_mensual` and `soy_super` are never used
[INFO] [stdout]   --> src/tp04/ej03.rs:23:8
[INFO] [stdout]    |
[INFO] [stdout] 22 | impl TipoSuscripcion {
[INFO] [stdout]    | -------------------- methods in this implementation
[INFO] [stdout] 23 |     fn costo_mensual(&self) -> f64 {
[INFO] [stdout]    |        ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 62 |     fn soy_super(&self) -> bool {
[INFO] [stdout]    |        ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `duracion_meses` and `fecha_inicio` are never read
[INFO] [stdout]   --> src/tp04/ej03.rs:73:5
[INFO] [stdout]    |
[INFO] [stdout] 71 | struct Suscripcion {
[INFO] [stdout]    |        ----------- fields in this struct
[INFO] [stdout] 72 |     tipo: TipoSuscripcion,
[INFO] [stdout] 73 |     duracion_meses: u8,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^
[INFO] [stdout] 74 |     fecha_inicio: String,
[INFO] [stdout]    |     ^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `Suscripcion` has derived impls for the traits `Debug` and `Clone`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `activar_suscripcion` is never used
[INFO] [stdout]   --> src/tp04/ej03.rs:88:8
[INFO] [stdout]    |
[INFO] [stdout] 78 | impl Suscripcion {
[INFO] [stdout]    | ---------------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 88 |     fn activar_suscripcion(&mut self) {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variants `TransferenciaBancaria`, `TarjetaCredito`, and `Cripto` are never constructed
[INFO] [stdout]    --> src/tp04/ej03.rs:126:5
[INFO] [stdout]     |
[INFO] [stdout] 121 | enum MedioPago {
[INFO] [stdout]     |      --------- variants in this enum
[INFO] [stdout] ...
[INFO] [stdout] 126 |     TransferenciaBancaria {
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 129 |     TarjetaCredito {
[INFO] [stdout]     |     ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 132 |     Cripto {
[INFO] [stdout]     |     ^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `MedioPago` has derived impls for the traits `Debug` and `Clone`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `username`, `nombre`, `apellido`, and `email` are never read
[INFO] [stdout]    --> src/tp04/ej03.rs:154:5
[INFO] [stdout]     |
[INFO] [stdout] 150 | struct Usuario {
[INFO] [stdout]     |        ------- fields in this struct
[INFO] [stdout] ...
[INFO] [stdout] 154 |     username: String,
[INFO] [stdout]     |     ^^^^^^^^
[INFO] [stdout] 155 |     nombre: String,
[INFO] [stdout]     |     ^^^^^^
[INFO] [stdout] 156 |     apellido: String,
[INFO] [stdout]     |     ^^^^^^^^
[INFO] [stdout] 157 |     email: String,
[INFO] [stdout]     |     ^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `Usuario` has derived impls for the traits `Debug` and `Clone`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `agregar_suscripcion` and `downgrade_suscripcion` are never used
[INFO] [stdout]    --> src/tp04/ej03.rs:161:8
[INFO] [stdout]     |
[INFO] [stdout] 160 | impl Usuario {
[INFO] [stdout]     | ------------ methods in this implementation
[INFO] [stdout] 161 |     fn agregar_suscripcion(&mut self, suscripcion: Suscripcion) {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 198 |     fn downgrade_suscripcion(&mut self) -> Result<(), String> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `crear_plataforma`, `crear_usuario`, and `downgrade_suscripcion` are never used
[INFO] [stdout]    --> src/tp04/ej03.rs:216:12
[INFO] [stdout]     |
[INFO] [stdout] 214 | impl StreamingRust {
[INFO] [stdout]     | ------------------ associated items in this implementation
[INFO] [stdout] 215 |
[INFO] [stdout] 216 |     pub fn crear_plataforma() -> StreamingRust {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 222 |     pub fn crear_usuario(&mut self, suscripcion: &Suscripcion, medio_pago: &MedioPago, id: u32, username: String, nombre: String, a...
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 249 |     pub fn downgrade_suscripcion(&mut self, usuario: &mut Usuario) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `datos` and `email_suscripcion` are never read
[INFO] [stdout]   --> src/tp04/julieta_murias_e2_v2.rs:65:5
[INFO] [stdout]    |
[INFO] [stdout] 64 | struct Cliente {
[INFO] [stdout]    |        ------- fields in this struct
[INFO] [stdout] 65 |     datos: DatosPersona,
[INFO] [stdout]    |     ^^^^^
[INFO] [stdout] 66 |     suscripcion_newsletter: bool,
[INFO] [stdout] 67 |     email_suscripcion: Option<String>, 
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `Cliente` has derived impls for the traits `Debug` and `Clone`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variant `TarjetaDebito` is never constructed
[INFO] [stdout]   --> src/tp04/julieta_murias_e2_v2.rs:88:5
[INFO] [stdout]    |
[INFO] [stdout] 86 | enum MedioPago {
[INFO] [stdout]    |      --------- variant in this enum
[INFO] [stdout] 87 |     TarjetaCredito,
[INFO] [stdout] 88 |     TarjetaDebito,
[INFO] [stdout]    |     ^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `MedioPago` has derived impls for the traits `Debug` and `Clone`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `Result` that must be used
[INFO] [stdout]    --> src/tp04/ej03.rs:191:17
[INFO] [stdout]     |
[INFO] [stdout] 191 |                 suscripcion.upgrade();
[INFO] [stdout]     |                 ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: this `Result` may be an `Err` variant, which should be handled
[INFO] [stdout]     = note: `#[warn(unused_must_use)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]     |
[INFO] [stdout] 191 |                 let _ = suscripcion.upgrade();
[INFO] [stdout]     |                 +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `Result` that must be used
[INFO] [stdout]    --> src/tp04/ej03.rs:201:17
[INFO] [stdout]     |
[INFO] [stdout] 201 |                 suscripcion.downgrade();
[INFO] [stdout]     |                 ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: this `Result` may be an `Err` variant, which should be handled
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]     |
[INFO] [stdout] 201 |                 let _ = suscripcion.downgrade();
[INFO] [stdout]     |                 +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `Result` that must be used
[INFO] [stdout]    --> src/tp04/ej03.rs:245:13
[INFO] [stdout]     |
[INFO] [stdout] 245 |             user.upgrade_suscripcion(); //Update subscription.
[INFO] [stdout]     |             ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: this `Result` may be an `Err` variant, which should be handled
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]     |
[INFO] [stdout] 245 |             let _ = user.upgrade_suscripcion(); //Update subscription.
[INFO] [stdout]     |             +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `Result` that must be used
[INFO] [stdout]    --> src/tp04/ej03.rs:252:13
[INFO] [stdout]     |
[INFO] [stdout] 252 |             user.downgrade_suscripcion(); //Downgrade subscription.
[INFO] [stdout]     |             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: this `Result` may be an `Err` variant, which should be handled
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]     |
[INFO] [stdout] 252 |             let _ = user.downgrade_suscripcion(); //Downgrade subscription.
[INFO] [stdout]     |             +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `Result` that must be used
[INFO] [stdout]    --> src/tp04/ej03.rs:258:13
[INFO] [stdout]     |
[INFO] [stdout] 258 |             user.cancelar_suscripcion(); //Downgrade subscription.
[INFO] [stdout]     |             ^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: this `Result` may be an `Err` variant, which should be handled
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]     |
[INFO] [stdout] 258 |             let _ = user.cancelar_suscripcion(); //Downgrade subscription.
[INFO] [stdout]     |             +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `prodCant1` should have a snake case name
[INFO] [stdout]    --> src/tp04/julieta_murias_e2_v2.rs:577:13
[INFO] [stdout]     |
[INFO] [stdout] 577 |         let prodCant1 = VentaProducto {
[INFO] [stdout]     |             ^^^^^^^^^ help: convert the identifier to snake case: `prod_cant1`
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(non_snake_case)]` (part of `#[warn(nonstandard_style)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `prodCant2` should have a snake case name
[INFO] [stdout]    --> src/tp04/julieta_murias_e2_v2.rs:582:13
[INFO] [stdout]     |
[INFO] [stdout] 582 |         let prodCant2 = VentaProducto {
[INFO] [stdout]     |             ^^^^^^^^^ help: convert the identifier to snake case: `prod_cant2`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `prodCant1` should have a snake case name
[INFO] [stdout]    --> src/tp04/julieta_murias_e2_v2.rs:631:13
[INFO] [stdout]     |
[INFO] [stdout] 631 |         let prodCant1 = VentaProducto {
[INFO] [stdout]     |             ^^^^^^^^^ help: convert the identifier to snake case: `prod_cant1`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `prodCant2` should have a snake case name
[INFO] [stdout]    --> src/tp04/julieta_murias_e2_v2.rs:636:13
[INFO] [stdout]     |
[INFO] [stdout] 636 |         let prodCant2 = VentaProducto {
[INFO] [stdout]     |             ^^^^^^^^^ help: convert the identifier to snake case: `prod_cant2`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `prodCant1` should have a snake case name
[INFO] [stdout]    --> src/tp04/julieta_murias_e2_v2.rs:680:13
[INFO] [stdout]     |
[INFO] [stdout] 680 |         let prodCant1 = VentaProducto {
[INFO] [stdout]     |             ^^^^^^^^^ help: convert the identifier to snake case: `prod_cant1`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `prodCant2` should have a snake case name
[INFO] [stdout]    --> src/tp04/julieta_murias_e2_v2.rs:685:13
[INFO] [stdout]     |
[INFO] [stdout] 685 |         let prodCant2 = VentaProducto {
[INFO] [stdout]     |             ^^^^^^^^^ help: convert the identifier to snake case: `prod_cant2`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]     Finished `test` profile [unoptimized + debuginfo] target(s) in 1.67s
[INFO] running `Command { std: "docker" "inspect" "dd79666d33d8107c812eb12fd7a602d0536e788fc2e2a12236725c0c840c1474", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "dd79666d33d8107c812eb12fd7a602d0536e788fc2e2a12236725c0c840c1474", kill_on_drop: false }`
[INFO] [stdout] dd79666d33d8107c812eb12fd7a602d0536e788fc2e2a12236725c0c840c1474
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-6-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-6-tc1/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=forbid" "-e" "RUSTDOCFLAGS=--cap-lints=forbid" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:d429b63d4308055ea97f60fb1d3dfca48854a00942f1bd2ad806beaf015945ec" "/opt/rustwide/cargo-home/bin/cargo" "+1f7f8ea0721a3b1eb73e6c6d25cccb371434b320" "test" "--frozen", kill_on_drop: false }`
[INFO] [stdout] 6ae81d50ec8765ae98f7bff163d00cfce53406d174a2f7b3697b97e1ff7ebb64
[INFO] running `Command { std: "docker" "start" "-a" "6ae81d50ec8765ae98f7bff163d00cfce53406d174a2f7b3697b97e1ff7ebb64", kill_on_drop: false }`
[INFO] [stderr] warning: the cargo feature `edition2024` has been stabilized in the 1.85 release and is no longer necessary to be listed in the manifest
[INFO] [stderr]   See https://doc.rust-lang.org/nightly/cargo/reference/manifest.html#the-edition-field for more information about using this feature.
[INFO] [stderr] warning: unnecessary parentheses around `if` condition
[INFO] [stderr]   --> src/tp03/ej08.rs:99:16
[INFO] [stderr]    |
[INFO] [stderr] 99 |             if (song.titulo == nombre) {
[INFO] [stderr]    |                ^                     ^
[INFO] [stderr]    |
[INFO] [stderr]    = note: `#[warn(unused_parens)]` (part of `#[warn(unused)]`) on by default
[INFO] [stderr] help: remove these parentheses
[INFO] [stderr]    |
[INFO] [stderr] 99 -             if (song.titulo == nombre) {
[INFO] [stderr] 99 +             if song.titulo == nombre {
[INFO] [stderr]    |
[INFO] [stderr] 
[INFO] [stderr] warning: unnecessary parentheses around pattern
[INFO] [stderr]   --> src/tp03/ej10.rs:54:9
[INFO] [stderr]    |
[INFO] [stderr] 54 |         (EstadoPrestamo::EnPrestamo) => true,
[INFO] [stderr]    |         ^                          ^
[INFO] [stderr]    |
[INFO] [stderr] help: remove these parentheses
[INFO] [stderr]    |
[INFO] [stderr] 54 -         (EstadoPrestamo::EnPrestamo) => true,
[INFO] [stderr] 54 +         EstadoPrestamo::EnPrestamo  => true,
[INFO] [stderr]    |
[INFO] [stderr] 
[INFO] [stderr] warning: unnecessary parentheses around pattern
[INFO] [stderr]    --> src/tp03/ej10.rs:574:17
[INFO] [stderr]     |
[INFO] [stderr] 574 |                 (EstadoPrestamo::Devuelto) => true,
[INFO] [stderr]     |                 ^                        ^
[INFO] [stderr]     |
[INFO] [stderr] help: remove these parentheses
[INFO] [stderr]     |
[INFO] [stderr] 574 -                 (EstadoPrestamo::Devuelto) => true,
[INFO] [stderr] 574 +                 EstadoPrestamo::Devuelto  => true,
[INFO] [stderr]     |
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `std::ptr::eq`
[INFO] [stderr]  --> src/tp04/ej03.rs:1:5
[INFO] [stderr]   |
[INFO] [stderr] 1 | use std::ptr::eq;
[INFO] [stderr]   |     ^^^^^^^^^^^^
[INFO] [stderr]   |
[INFO] [stderr]   = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `core::panic`
[INFO] [stderr]  --> src/main.rs:8:5
[INFO] [stderr]   |
[INFO] [stderr] 8 | use core::panic;
[INFO] [stderr]   |     ^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: variable does not need to be mutable
[INFO] [stderr]   --> src/tp03/ej01.rs:39:9
[INFO] [stderr]    |
[INFO] [stderr] 39 |     let mut me_without_direction = Persona::new (19, String::from("Julieta"), None);
[INFO] [stderr]    |         ----^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr]    |         |
[INFO] [stderr]    |         help: remove this `mut`
[INFO] [stderr]    |
[INFO] [stderr]    = note: `#[warn(unused_mut)]` (part of `#[warn(unused)]`) on by default
[INFO] [stderr] 
[INFO] [stderr] warning: unused variable: `message1`
[INFO] [stderr]   --> src/tp03/ej01.rs:42:9
[INFO] [stderr]    |
[INFO] [stderr] 42 |     let message1 = me_with_direction.to_string();
[INFO] [stderr]    |         ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_message1`
[INFO] [stderr]    |
[INFO] [stderr]    = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stderr] 
[INFO] [stderr] warning: value assigned to `days_in_current_month` is never read
[INFO] [stderr]   --> src/tp03/ej03.rs:76:41
[INFO] [stderr]    |
[INFO] [stderr] 76 |         let mut days_in_current_month = days_in_month[self.mes as usize];
[INFO] [stderr]    |                                         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr]    |
[INFO] [stderr]    = help: maybe it is overwritten before being read?
[INFO] [stderr]    = note: `#[warn(unused_assignments)]` (part of `#[warn(unused)]`) on by default
[INFO] [stderr] 
[INFO] [stderr] warning: value assigned to `days_in_current_month` is never read
[INFO] [stderr]   --> src/tp03/ej03.rs:79:13
[INFO] [stderr]    |
[INFO] [stderr] 79 |             days_in_current_month = 29;
[INFO] [stderr]    |             ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr]    |
[INFO] [stderr]    = help: maybe it is overwritten before being read?
[INFO] [stderr] 
[INFO] [stderr] warning: variable does not need to be mutable
[INFO] [stderr]    --> src/tp03/ej03.rs:133:13
[INFO] [stderr]     |
[INFO] [stderr] 133 |         let mut date1 = Fecha {
[INFO] [stderr]     |             ----^^^^^
[INFO] [stderr]     |             |
[INFO] [stderr]     |             help: remove this `mut`
[INFO] [stderr] 
[INFO] [stderr] warning: variable does not need to be mutable
[INFO] [stderr]    --> src/tp03/ej03.rs:140:13
[INFO] [stderr]     |
[INFO] [stderr] 140 |         let mut date2 = Fecha::new(21, 13, 2024);
[INFO] [stderr]     |             ----^^^^^
[INFO] [stderr]     |             |
[INFO] [stderr]     |             help: remove this `mut`
[INFO] [stderr] 
[INFO] [stderr] warning: variable does not need to be mutable
[INFO] [stderr]    --> src/tp03/ej03.rs:146:13
[INFO] [stderr]     |
[INFO] [stderr] 146 |         let mut date1 = Fecha {
[INFO] [stderr]     |             ----^^^^^
[INFO] [stderr]     |             |
[INFO] [stderr]     |             help: remove this `mut`
[INFO] [stderr] 
[INFO] [stderr] warning: variable does not need to be mutable
[INFO] [stderr]    --> src/tp03/ej03.rs:153:13
[INFO] [stderr]     |
[INFO] [stderr] 153 |         let mut date2 = Fecha::new(21, 12, 2024);
[INFO] [stderr]     |             ----^^^^^
[INFO] [stderr]     |             |
[INFO] [stderr]     |             help: remove this `mut`
[INFO] [stderr] 
[INFO] [stderr] warning: variable does not need to be mutable
[INFO] [stderr]    --> src/tp03/julieta_murias_v1.rs:183:13
[INFO] [stderr]     |
[INFO] [stderr] 183 |         let mut student= Estudiante::new(String::from("Pepe"), 123);
[INFO] [stderr]     |             ----^^^^^^^
[INFO] [stderr]     |             |
[INFO] [stderr]     |             help: remove this `mut`
[INFO] [stderr] 
[INFO] [stderr] warning: variable does not need to be mutable
[INFO] [stderr]    --> src/tp03/julieta_murias_v1.rs:198:13
[INFO] [stderr]     |
[INFO] [stderr] 198 |         let mut student2= Estudiante::new(String::from("Pepe"), 999);
[INFO] [stderr]     |             ----^^^^^^^^
[INFO] [stderr]     |             |
[INFO] [stderr]     |             help: remove this `mut`
[INFO] [stderr] 
[INFO] [stderr] warning: variable does not need to be mutable
[INFO] [stderr]    --> src/tp03/julieta_murias_v1.rs:210:13
[INFO] [stderr]     |
[INFO] [stderr] 210 |         let mut student2= Estudiante::new(String::from("Pepe"), 999);
[INFO] [stderr]     |             ----^^^^^^^^
[INFO] [stderr]     |             |
[INFO] [stderr]     |             help: remove this `mut`
[INFO] [stderr] 
[INFO] [stderr] warning: variable does not need to be mutable
[INFO] [stderr]    --> src/tp03/julieta_murias_v1.rs:222:13
[INFO] [stderr]     |
[INFO] [stderr] 222 |         let mut student2= Estudiante::new(String::from("Pepe"), 999);
[INFO] [stderr]     |             ----^^^^^^^^
[INFO] [stderr]     |             |
[INFO] [stderr]     |             help: remove this `mut`
[INFO] [stderr] 
[INFO] [stderr] warning: variable does not need to be mutable
[INFO] [stderr]    --> src/tp03/ej08.rs:258:13
[INFO] [stderr]     |
[INFO] [stderr] 258 |         let mut jazz_songs: Vec<Cancion>;
[INFO] [stderr]     |             ----^^^^^^^^^^
[INFO] [stderr]     |             |
[INFO] [stderr]     |             help: remove this `mut`
[INFO] [stderr] 
[INFO] [stderr] warning: variable does not need to be mutable
[INFO] [stderr]    --> src/tp03/ej08.rs:263:13
[INFO] [stderr]     |
[INFO] [stderr] 263 |         let mut pop_songs= playlist.obtener_canciones_por_genero(Genero::POP);
[INFO] [stderr]     |             ----^^^^^^^^^
[INFO] [stderr]     |             |
[INFO] [stderr]     |             help: remove this `mut`
[INFO] [stderr] 
[INFO] [stderr] warning: variable does not need to be mutable
[INFO] [stderr]    --> src/tp03/ej08.rs:281:13
[INFO] [stderr]     |
[INFO] [stderr] 281 |         let mut pepa_songs: Vec<Cancion>;
[INFO] [stderr]     |             ----^^^^^^^^^^
[INFO] [stderr]     |             |
[INFO] [stderr]     |             help: remove this `mut`
[INFO] [stderr] 
[INFO] [stderr] warning: variable does not need to be mutable
[INFO] [stderr]    --> src/tp03/ej08.rs:286:13
[INFO] [stderr]     |
[INFO] [stderr] 286 |         let mut titi_songs= playlist.obtener_canciones_por_artista(String::from("titi"));
[INFO] [stderr]     |             ----^^^^^^^^^^
[INFO] [stderr]     |             |
[INFO] [stderr]     |             help: remove this `mut`
[INFO] [stderr] 
[INFO] [stderr] warning: unused variable: `esta_devuelto`
[INFO] [stderr]    --> src/tp03/ej10.rs:572:13
[INFO] [stderr]     |
[INFO] [stderr] 572 |         let esta_devuelto = {
[INFO] [stderr]     |             ^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_esta_devuelto`
[INFO] [stderr] 
[INFO] [stderr] warning: variable does not need to be mutable
[INFO] [stderr]    --> src/tp03/julieta_murias_v2.rs:183:13
[INFO] [stderr]     |
[INFO] [stderr] 183 |         let mut student= Estudiante::new(String::from("Pepe"), 123);
[INFO] [stderr]     |             ----^^^^^^^
[INFO] [stderr]     |             |
[INFO] [stderr]     |             help: remove this `mut`
[INFO] [stderr] 
[INFO] [stderr] warning: variable does not need to be mutable
[INFO] [stderr]    --> src/tp03/julieta_murias_v2.rs:198:13
[INFO] [stderr]     |
[INFO] [stderr] 198 |         let mut student2= Estudiante::new(String::from("Pepe"), 999);
[INFO] [stderr]     |             ----^^^^^^^^
[INFO] [stderr]     |             |
[INFO] [stderr]     |             help: remove this `mut`
[INFO] [stderr] 
[INFO] [stderr] warning: variable does not need to be mutable
[INFO] [stderr]    --> src/tp03/julieta_murias_v2.rs:210:13
[INFO] [stderr]     |
[INFO] [stderr] 210 |         let mut student2= Estudiante::new(String::from("Pepe"), 999);
[INFO] [stderr]     |             ----^^^^^^^^
[INFO] [stderr]     |             |
[INFO] [stderr]     |             help: remove this `mut`
[INFO] [stderr] 
[INFO] [stderr] warning: variable does not need to be mutable
[INFO] [stderr]    --> src/tp03/julieta_murias_v2.rs:222:13
[INFO] [stderr]     |
[INFO] [stderr] 222 |         let mut student2= Estudiante::new(String::from("Pepe"), 999);
[INFO] [stderr]     |             ----^^^^^^^^
[INFO] [stderr]     |             |
[INFO] [stderr]     |             help: remove this `mut`
[INFO] [stderr] 
[INFO] [stderr] warning: unused variable: `numero_tarjeta`
[INFO] [stderr]    --> src/tp04/ej03.rs:141:41
[INFO] [stderr]     |
[INFO] [stderr] 141 |             MedioPago::TarjetaCredito { numero_tarjeta } => String::from("TarjetaCredito"),
[INFO] [stderr]     |                                         ^^^^^^^^^^^^^^ help: try ignoring the field: `numero_tarjeta: _`
[INFO] [stderr] 
[INFO] [stderr] warning: unused variable: `cbu`
[INFO] [stderr]    --> src/tp04/ej03.rs:142:38
[INFO] [stderr]     |
[INFO] [stderr] 142 |             MedioPago::MercadoPago { cbu } => String::from("MercadoPago"),
[INFO] [stderr]     |                                      ^^^ help: try ignoring the field: `cbu: _`
[INFO] [stderr] 
[INFO] [stderr] warning: unused variable: `cuenta_destino`
[INFO] [stderr]    --> src/tp04/ej03.rs:143:48
[INFO] [stderr]     |
[INFO] [stderr] 143 |             MedioPago::TransferenciaBancaria { cuenta_destino, cuenta_origen } => String::from("TransferenciaBancaria"),
[INFO] [stderr]     |                                                ^^^^^^^^^^^^^^ help: try ignoring the field: `cuenta_destino: _`
[INFO] [stderr] 
[INFO] [stderr] warning: unused variable: `cuenta_origen`
[INFO] [stderr]    --> src/tp04/ej03.rs:143:64
[INFO] [stderr]     |
[INFO] [stderr] 143 |             MedioPago::TransferenciaBancaria { cuenta_destino, cuenta_origen } => String::from("TransferenciaBancaria"),
[INFO] [stderr]     |                                                                ^^^^^^^^^^^^^ help: try ignoring the field: `cuenta_origen: _`
[INFO] [stderr] 
[INFO] [stderr] warning: unused variable: `tipo_cripto`
[INFO] [stderr]    --> src/tp04/ej03.rs:144:33
[INFO] [stderr]     |
[INFO] [stderr] 144 |             MedioPago::Cripto { tipo_cripto } => String::from("Cripto"),
[INFO] [stderr]     |                                 ^^^^^^^^^^^ help: try ignoring the field: `tipo_cripto: _`
[INFO] [stderr] 
[INFO] [stderr] warning: irrefutable `if let` pattern
[INFO] [stderr]    --> src/tp04/ej03.rs:234:12
[INFO] [stderr]     |
[INFO] [stderr] 234 |         if let user_existe = self.usuarios.iter().find(|u| u.id == id) {
[INFO] [stderr]     |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr]     |
[INFO] [stderr]     = note: this pattern will always match, so the `if let` is useless
[INFO] [stderr]     = help: consider replacing the `if let` with a `let`
[INFO] [stderr]     = note: `#[warn(irrefutable_let_patterns)]` on by default
[INFO] [stderr] 
[INFO] [stderr] warning: unused variable: `user_existe`
[INFO] [stderr]    --> src/tp04/ej03.rs:234:16
[INFO] [stderr]     |
[INFO] [stderr] 234 |         if let user_existe = self.usuarios.iter().find(|u| u.id == id) {
[INFO] [stderr]     |                ^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_user_existe`
[INFO] [stderr] 
[INFO] [stderr] warning: unused variable: `suscripcion`
[INFO] [stderr]    --> src/tp04/ej03.rs:352:50
[INFO] [stderr]     |
[INFO] [stderr] 352 |                 u.suscripciones.iter().for_each(|suscripcion| {
[INFO] [stderr]     |                                                  ^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_suscripcion`
[INFO] [stderr] 
[INFO] [stderr] warning: variable does not need to be mutable
[INFO] [stderr]    --> src/tp04/ej03.rs:412:13
[INFO] [stderr]     |
[INFO] [stderr] 412 |         let mut usuarios = vec![user0.clone()];
[INFO] [stderr]     |             ----^^^^^^^^
[INFO] [stderr]     |             |
[INFO] [stderr]     |             help: remove this `mut`
[INFO] [stderr] 
[INFO] [stderr] warning: variable does not need to be mutable
[INFO] [stderr]    --> src/tp04/ej03.rs:457:13
[INFO] [stderr]     |
[INFO] [stderr] 457 |         let mut user0 = Usuario {
[INFO] [stderr]     |             ----^^^^^
[INFO] [stderr]     |             |
[INFO] [stderr]     |             help: remove this `mut`
[INFO] [stderr] 
[INFO] [stderr] warning: variable does not need to be mutable
[INFO] [stderr]    --> src/tp04/ej03.rs:472:13
[INFO] [stderr]     |
[INFO] [stderr] 472 |         let mut user1 = Usuario {
[INFO] [stderr]     |             ----^^^^^
[INFO] [stderr]     |             |
[INFO] [stderr]     |             help: remove this `mut`
[INFO] [stderr] 
[INFO] [stderr] warning: variable does not need to be mutable
[INFO] [stderr]    --> src/tp04/ej03.rs:487:13
[INFO] [stderr]     |
[INFO] [stderr] 487 |         let mut user2 = Usuario {
[INFO] [stderr]     |             ----^^^^^
[INFO] [stderr]     |             |
[INFO] [stderr]     |             help: remove this `mut`
[INFO] [stderr] 
[INFO] [stderr] warning: variable does not need to be mutable
[INFO] [stderr]    --> src/tp04/ej03.rs:502:13
[INFO] [stderr]     |
[INFO] [stderr] 502 |         let mut user3 = Usuario {
[INFO] [stderr]     |             ----^^^^^
[INFO] [stderr]     |             |
[INFO] [stderr]     |             help: remove this `mut`
[INFO] [stderr] 
[INFO] [stderr] warning: variable does not need to be mutable
[INFO] [stderr]    --> src/tp04/ej03.rs:521:13
[INFO] [stderr]     |
[INFO] [stderr] 521 |         let mut usuarios = vec![user0.clone(), user1.clone(), user2.clone(), user3.clone()];
[INFO] [stderr]     |             ----^^^^^^^^
[INFO] [stderr]     |             |
[INFO] [stderr]     |             help: remove this `mut`
[INFO] [stderr] 
[INFO] [stderr] warning: variable does not need to be mutable
[INFO] [stderr]    --> src/tp04/ej03.rs:522:13
[INFO] [stderr]     |
[INFO] [stderr] 522 |         let mut plataforma = StreamingRust {usuarios};
[INFO] [stderr]     |             ----^^^^^^^^^^
[INFO] [stderr]     |             |
[INFO] [stderr]     |             help: remove this `mut`
[INFO] [stderr] 
[INFO] [stderr] warning: unused variable: `sistema_ventas`
[INFO] [stderr]    --> src/tp04/julieta_murias_e2_v2.rs:589:13
[INFO] [stderr]     |
[INFO] [stderr] 589 |         let mut sistema_ventas:SistemaVentas;
[INFO] [stderr]     |             ^^^^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_sistema_ventas`
[INFO] [stderr] 
[INFO] [stderr] warning: unused variable: `venta`
[INFO] [stderr]    --> src/tp04/julieta_murias_e2_v2.rs:692:13
[INFO] [stderr]     |
[INFO] [stderr] 692 | ...   let venta = sistema_ventas.crear_venta("1/1/2025".to_string(), &cliente, &vendedor, productos.clone(), MedioPago::Transferenc...
[INFO] [stderr]     |           ^^^^^ help: if this is intentional, prefix it with an underscore: `_venta`
[INFO] [stderr] 
[INFO] [stderr] warning: variable does not need to be mutable
[INFO] [stderr]   --> src/main.rs:47:9
[INFO] [stderr]    |
[INFO] [stderr] 47 |     let mut var_ingresada: bool = match var_ingresada.trim().parse(){
[INFO] [stderr]    |         ----^^^^^^^^^^^^^
[INFO] [stderr]    |         |
[INFO] [stderr]    |         help: remove this `mut`
[INFO] [stderr] 
[INFO] [stderr] warning: variable does not need to be mutable
[INFO] [stderr]   --> src/main.rs:55:9
[INFO] [stderr]    |
[INFO] [stderr] 55 |     let mut var_ingresada = var_ingresada && t;
[INFO] [stderr]    |         ----^^^^^^^^^^^^^
[INFO] [stderr]    |         |
[INFO] [stderr]    |         help: remove this `mut`
[INFO] [stderr] 
[INFO] [stderr] warning: variable does not need to be mutable
[INFO] [stderr]   --> src/main.rs:58:9
[INFO] [stderr]    |
[INFO] [stderr] 58 |     let mut var_ingresada = var_ingresada || t;
[INFO] [stderr]    |         ----^^^^^^^^^^^^^
[INFO] [stderr]    |         |
[INFO] [stderr]    |         help: remove this `mut`
[INFO] [stderr] 
[INFO] [stderr] warning: variable does not need to be mutable
[INFO] [stderr]   --> src/main.rs:89:9
[INFO] [stderr]    |
[INFO] [stderr] 89 |     let mut number :u32 = 2;
[INFO] [stderr]    |         ----^^^^^^
[INFO] [stderr]    |         |
[INFO] [stderr]    |         help: remove this `mut`
[INFO] [stderr] 
[INFO] [stderr] warning: variable does not need to be mutable
[INFO] [stderr]   --> src/main.rs:97:9
[INFO] [stderr]    |
[INFO] [stderr] 97 |     let mut number_ingresado:u32 = match number_ingresado.trim().parse(){
[INFO] [stderr]    |         ----^^^^^^^^^^^^^^^^
[INFO] [stderr]    |         |
[INFO] [stderr]    |         help: remove this `mut`
[INFO] [stderr] 
[INFO] [stderr] warning: variable does not need to be mutable
[INFO] [stderr]    --> src/main.rs:105:9
[INFO] [stderr]     |
[INFO] [stderr] 105 |     let mut number = number + number_ingresado;
[INFO] [stderr]     |         ----^^^^^^
[INFO] [stderr]     |         |
[INFO] [stderr]     |         help: remove this `mut`
[INFO] [stderr] 
[INFO] [stderr] warning: variable does not need to be mutable
[INFO] [stderr]    --> src/main.rs:136:9
[INFO] [stderr]     |
[INFO] [stderr] 136 |     let mut caracter: char = caracter.trim().parse()
[INFO] [stderr]     |         ----^^^^^^^^
[INFO] [stderr]     |         |
[INFO] [stderr]     |         help: remove this `mut`
[INFO] [stderr] 
[INFO] [stderr] warning: value assigned to `suma_auxiliar` is never read
[INFO] [stderr]    --> src/main.rs:171:38
[INFO] [stderr]     |
[INFO] [stderr] 171 |         let mut suma_auxiliar: i32 = 0;
[INFO] [stderr]     |                                      ^
[INFO] [stderr]     |
[INFO] [stderr]     = help: maybe it is overwritten before being read?
[INFO] [stderr] 
[INFO] [stderr] warning: type `julieta_murias_v1::Examen` is more private than the item `julieta_murias_v1::obtener_materia_calificacion_alta`
[INFO] [stderr]   --> src/tp03/julieta_murias_v1.rs:24:1
[INFO] [stderr]    |
[INFO] [stderr] 24 | pub fn obtener_materia_calificacion_alta(examenes: &Vec<Examen>) -> String {
[INFO] [stderr]    | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ function `julieta_murias_v1::obtener_materia_calificacion_alta` is reachable at visibility `pub(crate)`
[INFO] [stderr]    |
[INFO] [stderr] note: but type `julieta_murias_v1::Examen` is only usable at visibility `pub(self)`
[INFO] [stderr]   --> src/tp03/julieta_murias_v1.rs:1:1
[INFO] [stderr]    |
[INFO] [stderr]  1 | struct Examen {
[INFO] [stderr]    | ^^^^^^^^^^^^^
[INFO] [stderr]    = note: `#[warn(private_interfaces)]` on by default
[INFO] [stderr] 
[INFO] [stderr] warning: type `julieta_murias_v1::Examen` is more private than the item `julieta_murias_v1::obtener_materia_calificacion_baja`
[INFO] [stderr]   --> src/tp03/julieta_murias_v1.rs:44:1
[INFO] [stderr]    |
[INFO] [stderr] 44 | pub fn obtener_materia_calificacion_baja(examenes: &Vec<Examen>) -> String {
[INFO] [stderr]    | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ function `julieta_murias_v1::obtener_materia_calificacion_baja` is reachable at visibility `pub(crate)`
[INFO] [stderr]    |
[INFO] [stderr] note: but type `julieta_murias_v1::Examen` is only usable at visibility `pub(self)`
[INFO] [stderr]   --> src/tp03/julieta_murias_v1.rs:1:1
[INFO] [stderr]    |
[INFO] [stderr]  1 | struct Examen {
[INFO] [stderr]    | ^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: type `ej07::Color` is more private than the item `compare_colors`
[INFO] [stderr]   --> src/tp03/ej07.rs:29:1
[INFO] [stderr]    |
[INFO] [stderr] 29 | pub fn compare_colors(color1: &Color, color2: &Color) -> bool {
[INFO] [stderr]    | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ function `compare_colors` is reachable at visibility `pub(crate)`
[INFO] [stderr]    |
[INFO] [stderr] note: but type `ej07::Color` is only usable at visibility `pub(self)`
[INFO] [stderr]   --> src/tp03/ej07.rs:3:1
[INFO] [stderr]    |
[INFO] [stderr]  3 | enum Color {
[INFO] [stderr]    | ^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: type `ej07::Auto` is more private than the item `ej07::compare`
[INFO] [stderr]   --> src/tp03/ej07.rs:41:1
[INFO] [stderr]    |
[INFO] [stderr] 41 | pub fn compare (auto1: &Auto, auto2: &Auto) -> bool {
[INFO] [stderr]    | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ function `ej07::compare` is reachable at visibility `pub(crate)`
[INFO] [stderr]    |
[INFO] [stderr] note: but type `ej07::Auto` is only usable at visibility `pub(self)`
[INFO] [stderr]   --> src/tp03/ej07.rs:12:1
[INFO] [stderr]    |
[INFO] [stderr] 12 | struct Auto {
[INFO] [stderr]    | ^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: type `ej08::Genero` is more private than the item `compare_genre`
[INFO] [stderr]   --> src/tp03/ej08.rs:32:1
[INFO] [stderr]    |
[INFO] [stderr] 32 | pub fn compare_genre(genero1: &Genero, genero2: &Genero) -> bool {
[INFO] [stderr]    | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ function `compare_genre` is reachable at visibility `pub(crate)`
[INFO] [stderr]    |
[INFO] [stderr] note: but type `ej08::Genero` is only usable at visibility `pub(self)`
[INFO] [stderr]   --> src/tp03/ej08.rs:2:1
[INFO] [stderr]    |
[INFO] [stderr]  2 | enum Genero {
[INFO] [stderr]    | ^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: type `ej08::Cancion` is more private than the item `ej08::compare`
[INFO] [stderr]   --> src/tp03/ej08.rs:43:1
[INFO] [stderr]    |
[INFO] [stderr] 43 | pub fn compare (cancion1: &Cancion, cancion2: &Cancion) -> bool {
[INFO] [stderr]    | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ function `ej08::compare` is reachable at visibility `pub(crate)`
[INFO] [stderr]    |
[INFO] [stderr] note: but type `ej08::Cancion` is only usable at visibility `pub(self)`
[INFO] [stderr]   --> src/tp03/ej08.rs:11:1
[INFO] [stderr]    |
[INFO] [stderr] 11 | struct Cancion {
[INFO] [stderr]    | ^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: type `ej09::Dueño` is more private than the item `compare_owners`
[INFO] [stderr]   --> src/tp03/ej09.rs:45:1
[INFO] [stderr]    |
[INFO] [stderr] 45 | pub fn compare_owners(owner1: &Dueño, owner2: &Dueño) -> bool {
[INFO] [stderr]    | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ function `compare_owners` is reachable at visibility `pub(crate)`
[INFO] [stderr]    |
[INFO] [stderr] note: but type `ej09::Dueño` is only usable at visibility `pub(self)`
[INFO] [stderr]   --> src/tp03/ej09.rs:39:1
[INFO] [stderr]    |
[INFO] [stderr] 39 | struct Dueño {
[INFO] [stderr]    | ^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: type `ej09::TipoAnimal` is more private than the item `compare_type`
[INFO] [stderr]   --> src/tp03/ej09.rs:51:1
[INFO] [stderr]    |
[INFO] [stderr] 51 | pub fn compare_type(type1: &TipoAnimal, type2: &TipoAnimal)  -> bool{
[INFO] [stderr]    | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ function `compare_type` is reachable at visibility `pub(crate)`
[INFO] [stderr]    |
[INFO] [stderr] note: but type `ej09::TipoAnimal` is only usable at visibility `pub(self)`
[INFO] [stderr]   --> src/tp03/ej09.rs:7:1
[INFO] [stderr]    |
[INFO] [stderr]  7 | enum TipoAnimal {
[INFO] [stderr]    | ^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: type `ej09::Mascota` is more private than the item `compare_pets`
[INFO] [stderr]   --> src/tp03/ej09.rs:61:1
[INFO] [stderr]    |
[INFO] [stderr] 61 | pub fn compare_pets (mascota1: &Mascota, mascota2: &Mascota) -> bool {
[INFO] [stderr]    | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ function `compare_pets` is reachable at visibility `pub(crate)`
[INFO] [stderr]    |
[INFO] [stderr] note: but type `ej09::Mascota` is only usable at visibility `pub(self)`
[INFO] [stderr]   --> src/tp03/ej09.rs:31:1
[INFO] [stderr]    |
[INFO] [stderr] 31 | struct Mascota {
[INFO] [stderr]    | ^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: type `Atencion` is more private than the item `compare_atencion`
[INFO] [stderr]   --> src/tp03/ej09.rs:78:1
[INFO] [stderr]    |
[INFO] [stderr] 78 | pub fn compare_atencion(atencion1: &Atencion, atencion2: &Atencion) -> bool {
[INFO] [stderr]    | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ function `compare_atencion` is reachable at visibility `pub(crate)`
[INFO] [stderr]    |
[INFO] [stderr] note: but type `Atencion` is only usable at visibility `pub(self)`
[INFO] [stderr]   --> src/tp03/ej09.rs:23:1
[INFO] [stderr]    |
[INFO] [stderr] 23 | struct Atencion {
[INFO] [stderr]    | ^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: type `ej10::EstadoPrestamo` is more private than the item `no_devolvio`
[INFO] [stderr]   --> src/tp03/ej10.rs:52:1
[INFO] [stderr]    |
[INFO] [stderr] 52 | pub fn no_devolvio (estado: &EstadoPrestamo) -> bool {
[INFO] [stderr]    | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ function `no_devolvio` is reachable at visibility `pub(crate)`
[INFO] [stderr]    |
[INFO] [stderr] note: but type `ej10::EstadoPrestamo` is only usable at visibility `pub(self)`
[INFO] [stderr]   --> src/tp03/ej10.rs:13:1
[INFO] [stderr]    |
[INFO] [stderr] 13 | enum EstadoPrestamo {
[INFO] [stderr]    | ^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: type `ej10::Cliente` is more private than the item `compare_clientes`
[INFO] [stderr]   --> src/tp03/ej10.rs:59:1
[INFO] [stderr]    |
[INFO] [stderr] 59 | pub fn compare_clientes (cliente1: &Cliente, cliente2: &Cliente) -> bool {
[INFO] [stderr]    | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ function `compare_clientes` is reachable at visibility `pub(crate)`
[INFO] [stderr]    |
[INFO] [stderr] note: but type `ej10::Cliente` is only usable at visibility `pub(self)`
[INFO] [stderr]   --> src/tp03/ej10.rs:46:1
[INFO] [stderr]    |
[INFO] [stderr] 46 | struct Cliente {
[INFO] [stderr]    | ^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: type `julieta_murias_v2::Examen` is more private than the item `julieta_murias_v2::obtener_materia_calificacion_alta`
[INFO] [stderr]   --> src/tp03/julieta_murias_v2.rs:24:1
[INFO] [stderr]    |
[INFO] [stderr] 24 | pub fn obtener_materia_calificacion_alta(examenes: &Vec<Examen>) -> String {
[INFO] [stderr]    | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ function `julieta_murias_v2::obtener_materia_calificacion_alta` is reachable at visibility `pub(crate)`
[INFO] [stderr]    |
[INFO] [stderr] note: but type `julieta_murias_v2::Examen` is only usable at visibility `pub(self)`
[INFO] [stderr]   --> src/tp03/julieta_murias_v2.rs:1:1
[INFO] [stderr]    |
[INFO] [stderr]  1 | struct Examen {
[INFO] [stderr]    | ^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: type `julieta_murias_v2::Examen` is more private than the item `julieta_murias_v2::obtener_materia_calificacion_baja`
[INFO] [stderr]   --> src/tp03/julieta_murias_v2.rs:44:1
[INFO] [stderr]    |
[INFO] [stderr] 44 | pub fn obtener_materia_calificacion_baja(examenes: &Vec<Examen>) -> String {
[INFO] [stderr]    | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ function `julieta_murias_v2::obtener_materia_calificacion_baja` is reachable at visibility `pub(crate)`
[INFO] [stderr]    |
[INFO] [stderr] note: but type `julieta_murias_v2::Examen` is only usable at visibility `pub(self)`
[INFO] [stderr]   --> src/tp03/julieta_murias_v2.rs:1:1
[INFO] [stderr]    |
[INFO] [stderr]  1 | struct Examen {
[INFO] [stderr]    | ^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: type `tp04::ej02::Persona<'_>` is more private than the item `tp04::ej02::compare`
[INFO] [stderr]    --> src/tp04/ej02.rs:109:1
[INFO] [stderr]     |
[INFO] [stderr] 109 | pub fn compare (person1: Persona, person2: Persona) -> bool {
[INFO] [stderr]     | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ function `tp04::ej02::compare` is reachable at visibility `pub(crate)`
[INFO] [stderr]     |
[INFO] [stderr] note: but type `tp04::ej02::Persona<'_>` is only usable at visibility `pub(self)`
[INFO] [stderr]    --> src/tp04/ej02.rs:2:1
[INFO] [stderr]     |
[INFO] [stderr]   2 | struct Persona <'a>{
[INFO] [stderr]     | ^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: method `calcular_area` is never used
[INFO] [stderr]   --> src/tp03/ej04.rs:28:8
[INFO] [stderr]    |
[INFO] [stderr]  7 | impl Triangulo {
[INFO] [stderr]    | -------------- method in this implementation
[INFO] [stderr] ...
[INFO] [stderr] 28 |     fn calcular_area (&self) -> f64 {
[INFO] [stderr]    |        ^^^^^^^^^^^^^
[INFO] [stderr]    |
[INFO] [stderr]    = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stderr] 
[INFO] [stderr] warning: fields `nombre` and `id` are never read
[INFO] [stderr]  --> src/tp03/ej05.rs:2:5
[INFO] [stderr]   |
[INFO] [stderr] 1 | struct Producto {
[INFO] [stderr]   |        -------- fields in this struct
[INFO] [stderr] 2 |     nombre: String,
[INFO] [stderr]   |     ^^^^^^
[INFO] [stderr] 3 |     precio_bruto: f64,
[INFO] [stderr] 4 |     id: u32,
[INFO] [stderr]   |     ^^
[INFO] [stderr] 
[INFO] [stderr] warning: multiple fields are never read
[INFO] [stderr]   --> src/tp03/julieta_murias_v1.rs:14:5
[INFO] [stderr]    |
[INFO] [stderr] 13 | struct Informe {
[INFO] [stderr]    |        ------- fields in this struct
[INFO] [stderr] 14 |     nombre: String,
[INFO] [stderr]    |     ^^^^^^
[INFO] [stderr] 15 |     id: i32,
[INFO] [stderr]    |     ^^
[INFO] [stderr] 16 |     cant_examenes_rendidos: u32,
[INFO] [stderr]    |     ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 17 |     promedio: f64,
[INFO] [stderr]    |     ^^^^^^^^
[INFO] [stderr] 18 |     nota_baja: f64,
[INFO] [stderr]    |     ^^^^^^^^^
[INFO] [stderr] 19 |     materia_baja: String,
[INFO] [stderr]    |     ^^^^^^^^^^^^
[INFO] [stderr] 20 |     nota_alta: f64,
[INFO] [stderr]    |     ^^^^^^^^^
[INFO] [stderr] 21 |     materia_alta: String,
[INFO] [stderr]    |     ^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: variants `VERDE` and `AZUL` are never constructed
[INFO] [stderr]  --> src/tp03/ej07.rs:5:5
[INFO] [stderr]   |
[INFO] [stderr] 3 | enum Color {
[INFO] [stderr]   |      ----- variants in this enum
[INFO] [stderr] 4 |     ROJO,
[INFO] [stderr] 5 |     VERDE, 
[INFO] [stderr]   |     ^^^^^
[INFO] [stderr] 6 |     AZUL,
[INFO] [stderr]   |     ^^^^
[INFO] [stderr]   |
[INFO] [stderr]   = note: `Color` has a derived impl for the trait `Clone`, but this is intentionally ignored during dead code analysis
[INFO] [stderr] 
[INFO] [stderr] warning: fields `nombre` and `direccion` are never read
[INFO] [stderr]   --> src/tp03/ej07.rs:21:5
[INFO] [stderr]    |
[INFO] [stderr] 20 | struct ConsecionarioAuto {
[INFO] [stderr]    |        ----------------- fields in this struct
[INFO] [stderr] 21 |     nombre: String,
[INFO] [stderr]    |     ^^^^^^
[INFO] [stderr] 22 |     direccion: String,
[INFO] [stderr]    |     ^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: variant `RAP` is never constructed
[INFO] [stderr]  --> src/tp03/ej08.rs:6:5
[INFO] [stderr]   |
[INFO] [stderr] 2 | enum Genero {
[INFO] [stderr]   |      ------ variant in this enum
[INFO] [stderr] ...
[INFO] [stderr] 6 |     RAP,
[INFO] [stderr]   |     ^^^
[INFO] [stderr]   |
[INFO] [stderr]   = note: `Genero` has a derived impl for the trait `Clone`, but this is intentionally ignored during dead code analysis
[INFO] [stderr] 
[INFO] [stderr] warning: variant `OTROS` is never constructed
[INFO] [stderr]   --> src/tp03/ej09.rs:11:5
[INFO] [stderr]    |
[INFO] [stderr]  7 | enum TipoAnimal {
[INFO] [stderr]    |      ---------- variant in this enum
[INFO] [stderr] ...
[INFO] [stderr] 11 |     OTROS,
[INFO] [stderr]    |     ^^^^^
[INFO] [stderr]    |
[INFO] [stderr]    = note: `TipoAnimal` has a derived impl for the trait `Clone`, but this is intentionally ignored during dead code analysis
[INFO] [stderr] 
[INFO] [stderr] warning: fields `nombre`, `direccion`, and `id` are never read
[INFO] [stderr]   --> src/tp03/ej09.rs:15:5
[INFO] [stderr]    |
[INFO] [stderr] 14 | struct Veterinaria {
[INFO] [stderr]    |        ----------- fields in this struct
[INFO] [stderr] 15 |     nombre: String,
[INFO] [stderr]    |     ^^^^^^
[INFO] [stderr] 16 |     direccion: String,
[INFO] [stderr]    |     ^^^^^^^^^
[INFO] [stderr] 17 |     id: i32,
[INFO] [stderr]    |     ^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `compare_atencion` is never used
[INFO] [stderr]   --> src/tp03/ej09.rs:78:8
[INFO] [stderr]    |
[INFO] [stderr] 78 | pub fn compare_atencion(atencion1: &Atencion, atencion2: &Atencion) -> bool {
[INFO] [stderr]    |        ^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: methods `modificar_diagnostico`, `modificar_fecha`, and `eliminar_atencion` are never used
[INFO] [stderr]    --> src/tp03/ej09.rs:162:8
[INFO] [stderr]     |
[INFO] [stderr]  85 | impl Veterinaria {
[INFO] [stderr]     | ---------------- methods in this implementation
[INFO] [stderr] ...
[INFO] [stderr] 162 |     fn modificar_diagnostico(&mut self, diagnostico_nuevo: String, atencion: &Atencion) {
[INFO] [stderr]     |        ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 177 |     fn modificar_fecha(&mut self, fecha_nueva: Option<Fecha>, atencion: &Atencion) {
[INFO] [stderr]     |        ^^^^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 192 |     fn eliminar_atencion (&mut self, atencion: &Atencion) {
[INFO] [stderr]     |        ^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: variant `Tecnico` is never constructed
[INFO] [stderr]  --> src/tp03/ej10.rs:8:5
[INFO] [stderr]   |
[INFO] [stderr] 5 | enum Genero {
[INFO] [stderr]   |      ------ variant in this enum
[INFO] [stderr] ...
[INFO] [stderr] 8 |     Tecnico,
[INFO] [stderr]   |     ^^^^^^^
[INFO] [stderr]   |
[INFO] [stderr]   = note: `Genero` has a derived impl for the trait `Clone`, but this is intentionally ignored during dead code analysis
[INFO] [stderr] 
[INFO] [stderr] warning: fields `nombre` and `direccion` are never read
[INFO] [stderr]   --> src/tp03/ej10.rs:20:5
[INFO] [stderr]    |
[INFO] [stderr] 19 | struct Biblioteca {
[INFO] [stderr]    |        ---------- fields in this struct
[INFO] [stderr] 20 |     nombre: String,
[INFO] [stderr]    |     ^^^^^^
[INFO] [stderr] 21 |     direccion: String,
[INFO] [stderr]    |     ^^^^^^^^^
[INFO] [stderr]    |
[INFO] [stderr]    = note: `Biblioteca` has a derived impl for the trait `Clone`, but this is intentionally ignored during dead code analysis
[INFO] [stderr] 
[INFO] [stderr] warning: fields `titulo`, `autor`, `numero_paginas`, and `genero` are never read
[INFO] [stderr]   --> src/tp03/ej10.rs:29:5
[INFO] [stderr]    |
[INFO] [stderr] 27 | struct Libro {
[INFO] [stderr]    |        ----- fields in this struct
[INFO] [stderr] 28 |     isbn: u32,
[INFO] [stderr] 29 |     titulo: String,
[INFO] [stderr]    |     ^^^^^^
[INFO] [stderr] 30 |     copias_disponiles: u32,
[INFO] [stderr] 31 |     autor: String,
[INFO] [stderr]    |     ^^^^^
[INFO] [stderr] 32 |     numero_paginas: u32,
[INFO] [stderr]    |     ^^^^^^^^^^^^^^
[INFO] [stderr] 33 |     genero: Genero,
[INFO] [stderr]    |     ^^^^^^
[INFO] [stderr]    |
[INFO] [stderr]    = note: `Libro` has a derived impl for the trait `Clone`, but this is intentionally ignored during dead code analysis
[INFO] [stderr] 
[INFO] [stderr] warning: field `fecha_devolucion` is never read
[INFO] [stderr]   --> src/tp03/ej10.rs:41:5
[INFO] [stderr]    |
[INFO] [stderr] 37 | struct Prestamo {
[INFO] [stderr]    |        -------- field in this struct
[INFO] [stderr] ...
[INFO] [stderr] 41 |     fecha_devolucion: Fecha, 
[INFO] [stderr]    |     ^^^^^^^^^^^^^^^^
[INFO] [stderr]    |
[INFO] [stderr]    = note: `Prestamo` has a derived impl for the trait `Clone`, but this is intentionally ignored during dead code analysis
[INFO] [stderr] 
[INFO] [stderr] warning: multiple fields are never read
[INFO] [stderr]   --> src/tp03/julieta_murias_v2.rs:14:5
[INFO] [stderr]    |
[INFO] [stderr] 13 | struct Informe {
[INFO] [stderr]    |        ------- fields in this struct
[INFO] [stderr] 14 |     nombre: String,
[INFO] [stderr]    |     ^^^^^^
[INFO] [stderr] 15 |     id: i32,
[INFO] [stderr]    |     ^^
[INFO] [stderr] 16 |     cant_examenes_rendidos: u32,
[INFO] [stderr]    |     ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 17 |     promedio: f64,
[INFO] [stderr]    |     ^^^^^^^^
[INFO] [stderr] 18 |     nota_baja: f64,
[INFO] [stderr]    |     ^^^^^^^^^
[INFO] [stderr] 19 |     materia_baja: String,
[INFO] [stderr]    |     ^^^^^^^^^^^^
[INFO] [stderr] 20 |     nota_alta: f64,
[INFO] [stderr]    |     ^^^^^^^^^
[INFO] [stderr] 21 |     materia_alta: String,
[INFO] [stderr]    |     ^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: methods `costo_mensual` and `soy_super` are never used
[INFO] [stderr]   --> src/tp04/ej03.rs:23:8
[INFO] [stderr]    |
[INFO] [stderr] 22 | impl TipoSuscripcion {
[INFO] [stderr]    | -------------------- methods in this implementation
[INFO] [stderr] 23 |     fn costo_mensual(&self) -> f64 {
[INFO] [stderr]    |        ^^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 62 |     fn soy_super(&self) -> bool {
[INFO] [stderr]    |        ^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: fields `duracion_meses` and `fecha_inicio` are never read
[INFO] [stderr]   --> src/tp04/ej03.rs:73:5
[INFO] [stderr]    |
[INFO] [stderr] 71 | struct Suscripcion {
[INFO] [stderr]    |        ----------- fields in this struct
[INFO] [stderr] 72 |     tipo: TipoSuscripcion,
[INFO] [stderr] 73 |     duracion_meses: u8,
[INFO] [stderr]    |     ^^^^^^^^^^^^^^
[INFO] [stderr] 74 |     fecha_inicio: String,
[INFO] [stderr]    |     ^^^^^^^^^^^^
[INFO] [stderr]    |
[INFO] [stderr]    = note: `Suscripcion` has derived impls for the traits `Debug` and `Clone`, but these are intentionally ignored during dead code analysis
[INFO] [stderr] 
[INFO] [stderr] warning: method `activar_suscripcion` is never used
[INFO] [stderr]   --> src/tp04/ej03.rs:88:8
[INFO] [stderr]    |
[INFO] [stderr] 78 | impl Suscripcion {
[INFO] [stderr]    | ---------------- method in this implementation
[INFO] [stderr] ...
[INFO] [stderr] 88 |     fn activar_suscripcion(&mut self) {
[INFO] [stderr]    |        ^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: variants `TransferenciaBancaria`, `TarjetaCredito`, and `Cripto` are never constructed
[INFO] [stderr]    --> src/tp04/ej03.rs:126:5
[INFO] [stderr]     |
[INFO] [stderr] 121 | enum MedioPago {
[INFO] [stderr]     |      --------- variants in this enum
[INFO] [stderr] ...
[INFO] [stderr] 126 |     TransferenciaBancaria {
[INFO] [stderr]     |     ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 129 |     TarjetaCredito {
[INFO] [stderr]     |     ^^^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 132 |     Cripto {
[INFO] [stderr]     |     ^^^^^^
[INFO] [stderr]     |
[INFO] [stderr]     = note: `MedioPago` has derived impls for the traits `Debug` and `Clone`, but these are intentionally ignored during dead code analysis
[INFO] [stderr] 
[INFO] [stderr] warning: fields `username`, `nombre`, `apellido`, and `email` are never read
[INFO] [stderr]    --> src/tp04/ej03.rs:154:5
[INFO] [stderr]     |
[INFO] [stderr] 150 | struct Usuario {
[INFO] [stderr]     |        ------- fields in this struct
[INFO] [stderr] ...
[INFO] [stderr] 154 |     username: String,
[INFO] [stderr]     |     ^^^^^^^^
[INFO] [stderr] 155 |     nombre: String,
[INFO] [stderr]     |     ^^^^^^
[INFO] [stderr] 156 |     apellido: String,
[INFO] [stderr]     |     ^^^^^^^^
[INFO] [stderr] 157 |     email: String,
[INFO] [stderr]     |     ^^^^^
[INFO] [stderr]     |
[INFO] [stderr]     = note: `Usuario` has derived impls for the traits `Debug` and `Clone`, but these are intentionally ignored during dead code analysis
[INFO] [stderr] 
[INFO] [stderr] warning: methods `agregar_suscripcion` and `downgrade_suscripcion` are never used
[INFO] [stderr]    --> src/tp04/ej03.rs:161:8
[INFO] [stderr]     |
[INFO] [stderr] 160 | impl Usuario {
[INFO] [stderr]     | ------------ methods in this implementation
[INFO] [stderr] 161 |     fn agregar_suscripcion(&mut self, suscripcion: Suscripcion) {
[INFO] [stderr]     |        ^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 198 |     fn downgrade_suscripcion(&mut self) -> Result<(), String> {
[INFO] [stderr]     |        ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: associated items `crear_plataforma`, `crear_usuario`, and `downgrade_suscripcion` are never used
[INFO] [stderr]    --> src/tp04/ej03.rs:216:12
[INFO] [stderr]     |
[INFO] [stderr] 214 | impl StreamingRust {
[INFO] [stderr]     | ------------------ associated items in this implementation
[INFO] [stderr] 215 |
[INFO] [stderr] 216 |     pub fn crear_plataforma() -> StreamingRust {
[INFO] [stderr]     |            ^^^^^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 222 |     pub fn crear_usuario(&mut self, suscripcion: &Suscripcion, medio_pago: &MedioPago, id: u32, username: String, nombre: String, a...
[INFO] [stderr]     |            ^^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 249 |     pub fn downgrade_suscripcion(&mut self, usuario: &mut Usuario) {
[INFO] [stderr]     |            ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: fields `datos` and `email_suscripcion` are never read
[INFO] [stderr]   --> src/tp04/julieta_murias_e2_v2.rs:65:5
[INFO] [stderr]    |
[INFO] [stderr] 64 | struct Cliente {
[INFO] [stderr]    |        ------- fields in this struct
[INFO] [stderr] 65 |     datos: DatosPersona,
[INFO] [stderr]    |     ^^^^^
[INFO] [stderr] 66 |     suscripcion_newsletter: bool,
[INFO] [stderr] 67 |     email_suscripcion: Option<String>, 
[INFO] [stderr]    |     ^^^^^^^^^^^^^^^^^
[INFO] [stderr]    |
[INFO] [stderr]    = note: `Cliente` has derived impls for the traits `Debug` and `Clone`, but these are intentionally ignored during dead code analysis
[INFO] [stderr] 
[INFO] [stderr] warning: variant `TarjetaDebito` is never constructed
[INFO] [stderr]   --> src/tp04/julieta_murias_e2_v2.rs:88:5
[INFO] [stderr]    |
[INFO] [stderr] 86 | enum MedioPago {
[INFO] [stderr]    |      --------- variant in this enum
[INFO] [stderr] 87 |     TarjetaCredito,
[INFO] [stderr] 88 |     TarjetaDebito,
[INFO] [stderr]    |     ^^^^^^^^^^^^^
[INFO] [stderr]    |
[INFO] [stderr]    = note: `MedioPago` has derived impls for the traits `Debug` and `Clone`, but these are intentionally ignored during dead code analysis
[INFO] [stderr] 
[INFO] [stderr] warning: unused `Result` that must be used
[INFO] [stderr]    --> src/tp04/ej03.rs:191:17
[INFO] [stderr]     |
[INFO] [stderr] 191 |                 suscripcion.upgrade();
[INFO] [stderr]     |                 ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr]     |
[INFO] [stderr]     = note: this `Result` may be an `Err` variant, which should be handled
[INFO] [stderr]     = note: `#[warn(unused_must_use)]` (part of `#[warn(unused)]`) on by default
[INFO] [stderr] help: use `let _ = ...` to ignore the resulting value
[INFO] [stderr]     |
[INFO] [stderr] 191 |                 let _ = suscripcion.upgrade();
[INFO] [stderr]     |                 +++++++
[INFO] [stderr] 
[INFO] [stderr] warning: unused `Result` that must be used
[INFO] [stderr]    --> src/tp04/ej03.rs:201:17
[INFO] [stderr]     |
[INFO] [stderr] 201 |                 suscripcion.downgrade();
[INFO] [stderr]     |                 ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr]     |
[INFO] [stderr]     = note: this `Result` may be an `Err` variant, which should be handled
[INFO] [stderr] help: use `let _ = ...` to ignore the resulting value
[INFO] [stderr]     |
[INFO] [stderr] 201 |                 let _ = suscripcion.downgrade();
[INFO] [stderr]     |                 +++++++
[INFO] [stderr] 
[INFO] [stderr] warning: unused `Result` that must be used
[INFO] [stderr]    --> src/tp04/ej03.rs:245:13
[INFO] [stderr]     |
[INFO] [stderr] 245 |             user.upgrade_suscripcion(); //Update subscription.
[INFO] [stderr]     |             ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr]     |
[INFO] [stderr]     = note: this `Result` may be an `Err` variant, which should be handled
[INFO] [stderr] help: use `let _ = ...` to ignore the resulting value
[INFO] [stderr]     |
[INFO] [stderr] 245 |             let _ = user.upgrade_suscripcion(); //Update subscription.
[INFO] [stderr]     |             +++++++
[INFO] [stderr] 
[INFO] [stderr] warning: unused `Result` that must be used
[INFO] [stderr]    --> src/tp04/ej03.rs:252:13
[INFO] [stderr]     |
[INFO] [stderr] 252 |             user.downgrade_suscripcion(); //Downgrade subscription.
[INFO] [stderr]     |             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr]     |
[INFO] [stderr]     = note: this `Result` may be an `Err` variant, which should be handled
[INFO] [stderr] help: use `let _ = ...` to ignore the resulting value
[INFO] [stderr]     |
[INFO] [stderr] 252 |             let _ = user.downgrade_suscripcion(); //Downgrade subscription.
[INFO] [stderr]     |             +++++++
[INFO] [stderr] 
[INFO] [stderr] warning: unused `Result` that must be used
[INFO] [stderr]    --> src/tp04/ej03.rs:258:13
[INFO] [stderr]     |
[INFO] [stderr] 258 |             user.cancelar_suscripcion(); //Downgrade subscription.
[INFO] [stderr]     |             ^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr]     |
[INFO] [stderr]     = note: this `Result` may be an `Err` variant, which should be handled
[INFO] [stderr] help: use `let _ = ...` to ignore the resulting value
[INFO] [stderr]     |
[INFO] [stderr] 258 |             let _ = user.cancelar_suscripcion(); //Downgrade subscription.
[INFO] [stderr]     |             +++++++
[INFO] [stderr] 
[INFO] [stderr] warning: variable `prodCant1` should have a snake case name
[INFO] [stderr]    --> src/tp04/julieta_murias_e2_v2.rs:577:13
[INFO] [stderr]     |
[INFO] [stderr] 577 |         let prodCant1 = VentaProducto {
[INFO] [stderr]     |             ^^^^^^^^^ help: convert the identifier to snake case: `prod_cant1`
[INFO] [stderr]     |
[INFO] [stderr]     = note: `#[warn(non_snake_case)]` (part of `#[warn(nonstandard_style)]`) on by default
[INFO] [stderr] 
[INFO] [stderr] warning: variable `prodCant2` should have a snake case name
[INFO] [stderr]    --> src/tp04/julieta_murias_e2_v2.rs:582:13
[INFO] [stderr]     |
[INFO] [stderr] 582 |         let prodCant2 = VentaProducto {
[INFO] [stderr]     |             ^^^^^^^^^ help: convert the identifier to snake case: `prod_cant2`
[INFO] [stderr] 
[INFO] [stderr] warning: variable `prodCant1` should have a snake case name
[INFO] [stderr]    --> src/tp04/julieta_murias_e2_v2.rs:631:13
[INFO] [stderr]     |
[INFO] [stderr] 631 |         let prodCant1 = VentaProducto {
[INFO] [stderr]     |             ^^^^^^^^^ help: convert the identifier to snake case: `prod_cant1`
[INFO] [stderr] 
[INFO] [stderr] warning: variable `prodCant2` should have a snake case name
[INFO] [stderr]    --> src/tp04/julieta_murias_e2_v2.rs:636:13
[INFO] [stderr]     |
[INFO] [stderr] 636 |         let prodCant2 = VentaProducto {
[INFO] [stderr]     |             ^^^^^^^^^ help: convert the identifier to snake case: `prod_cant2`
[INFO] [stderr] 
[INFO] [stderr] warning: variable `prodCant1` should have a snake case name
[INFO] [stderr]    --> src/tp04/julieta_murias_e2_v2.rs:680:13
[INFO] [stderr]     |
[INFO] [stderr] 680 |         let prodCant1 = VentaProducto {
[INFO] [stderr]     |             ^^^^^^^^^ help: convert the identifier to snake case: `prod_cant1`
[INFO] [stderr] 
[INFO] [stderr] warning: variable `prodCant2` should have a snake case name
[INFO] [stderr]    --> src/tp04/julieta_murias_e2_v2.rs:685:13
[INFO] [stderr]     |
[INFO] [stderr] 685 |         let prodCant2 = VentaProducto {
[INFO] [stderr]     |             ^^^^^^^^^ help: convert the identifier to snake case: `prod_cant2`
[INFO] [stderr] 
[INFO] [stderr] warning: `seminario-rust` (bin "seminario-rust" test) generated 101 warnings (run `cargo fix --bin "seminario-rust" -p seminario-rust --tests` to apply 47 suggestions)
[INFO] [stderr]     Finished `test` profile [unoptimized + debuginfo] target(s) in 0.38s
[INFO] [stderr]      Running unittests src/main.rs (/opt/rustwide/target/debug/deps/seminario_rust-19f775888367ef67)
[INFO] [stdout] 
[INFO] [stdout] running 65 tests
[INFO] [stdout] test tp03::ej01::tester ... ok
[INFO] [stdout] test tp03::ej03::tests::test_es_bisiesto ... ok
[INFO] [stdout] test tp03::ej03::tests::test_es_mayor ... ok
[INFO] [stdout] test tp03::ej03::tests::test_es_fecha_valida ... ok
[INFO] [stdout] test tp03::ej03::tests::test_restar_dias ... ok
[INFO] [stdout] test tp03::ej04::tester ... ok
[INFO] [stdout] test tp03::ej03::tests::test_sumar_dias ... ok
[INFO] [stdout] test tp03::ej05::tests::test_apply_discount ... ok
[INFO] [stdout] test tp03::ej07::test::testear_agregar_auto ... ok
[INFO] [stdout] test tp03::ej07::test::testear_buscar_auto ... ok
[INFO] [stdout] test tp03::ej07::test::testear_calcular_precio ... ok
[INFO] [stdout] test tp03::ej08::test::testear_agregar_cancion ... ok
[INFO] [stdout] test tp03::ej07::test::testear_eliminar_auto ... ok
[INFO] [stdout] test tp03::ej08::test::testear_buscar_cancion ... ok
[INFO] [stdout] test tp03::ej08::test::testear_canciones_mismo_artista ... ok
[INFO] [stdout] test tp03::ej08::test::testear_cambiar_nombre_playlist ... ok
[INFO] [stdout] test tp03::ej08::test::testear_canciones_mismo_genero ... ok
[INFO] [stdout] test tp03::ej05::tests::test_calculate_taxes ... ok
[INFO] [stdout] test tp03::ej08::test::testear_eliminar_cancion ... ok
[INFO] [stdout] test tp03::ej08::test::testear_eliminar_canciones ... ok
[INFO] [stdout] test tp03::ej09::tests::test_agregar_mascota_maxima_prioridad ... ok
[INFO] [stdout] test tp03::ej09::tests::test_buscar_atencion ... ok
[INFO] [stdout] test tp03::ej10::test::test_buscar_prestamo ... ok
[INFO] [stdout] test tp03::ej10::test::test_contar_prestamos_cliente ... ok
[INFO] [stdout] test tp03::ej10::test::test_decrementar_copias ... ok
[INFO] [stdout] test tp03::ej10::test::test_devolver_libro ... ok
[INFO] [stdout] test tp03::ej09::tests::test_registrar_atencion ... ok
[INFO] [stdout] test tp03::ej10::test::test_obtener_cant_copias_libro ... ok
[INFO] [stdout] test tp03::ej10::test::test_incrementar_copias ... ok
[INFO] [stdout] test tp03::ej09::tests::test_agregar_nueva_mascota ... ok
[INFO] [stdout] test tp03::julieta_murias_v1::test::test_promedio ... ok
[INFO] [stdout] test tp03::ej10::test::test_realizar_prestamo ... ok
[INFO] [stdout] test tp03::julieta_murias_v1::test::test_entregable1 ... ok
[INFO] [stdout] test tp03::julieta_murias_v1::test::test_materias_asociadas_a_notas ... ok
[INFO] [stdout] test tp03::ej02::tester ... ok
[INFO] [stdout] test tp03::ej09::tests::test_atender_mascota ... ok
[INFO] [stdout] test tp03::ej09::tests::test_eliminar_mascota ... ok
[INFO] [stdout] test tp03::julieta_murias_v1::test::test_obtener_calificacion_baja ... ok
[INFO] [stdout] test tp03::julieta_murias_v2::test::test_materias_asociadas_a_notas ... ok
[INFO] [stdout] test tp03::julieta_murias_v1::test::test_obtener_calificacion_alta ... ok
[INFO] [stdout] test tp03::ej10::test::test_prestamos_vencidos ... ok
[INFO] [stdout] test tp03::ej10::test::test_prestamos_a_vencer ... ok
[INFO] [stdout] test tp03::julieta_murias_v2::test::test_entregable1 ... ok
[INFO] [stdout] test tp03::julieta_murias_v2::test::test_obtener_calificacion_alta ... ok
[INFO] [stdout] test tp03::julieta_murias_v2::test::test_obtener_calificacion_baja ... ok
[INFO] [stdout] test tp03::julieta_murias_v2::test::test_promedio ... ok
[INFO] [stdout] test tp04::ej01::test::testar_contar_primos ... ok
[INFO] [stdout] test tp04::ej02::test::test_alguno_vive_en ... ok
[INFO] [stdout] test tp04::ej02::test::test_filtrar_por_edad_ciudad ... ok
[INFO] [stdout] test tp03::ej08::test::testear_mover_cancion ... ok
[INFO] [stdout] test tp03::ej05::tests::test_total_price ... ok
[INFO] [stdout] test tp04::ej02::test::test_filtrar_por_salario ... ok
[INFO] [stdout] test tp04::ej02::test::test_persona_existe ... ok
[INFO] [stdout] test tp04::ej02::test::test_recolectar_edades ... ok
[INFO] [stdout] test tp04::ej02::test::test_salario_mayor_menor ... ok
[INFO] [stdout] test tp04::ej02::test::test_todos_viven_en ... ok
[INFO] [stdout] test tp04::ej03::test::test_estadisticas ... ok
[INFO] [stdout] test tp04::ej03::test::test_upgrade_downgrade ... ok
[INFO] [stdout] test tp04::julieta_murias_e2_v2::test::test_crear_venta ... ok
[INFO] [stdout] test tp04::julieta_murias_e2_v2::test::test_precio_final_venta ... ok
[INFO] [stdout] test tp04::julieta_murias_e2_v2::test::test_reportes ... ok
[INFO] [stdout] test tp04::julieta_murias_e2_v2::test::test_vendedor_con_ventas ... ok
[INFO] [stdout] test tp04::julieta_murias_e2_v2::test::test_vendedor_sin_ventas ... ok
[INFO] [stdout] test tp04::ej03::test::test_upgrade_subscription ... ok
[INFO] [stdout] test tp04::julieta_murias_e2_v2::test::test_informe_nulo ... ok
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 65 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.01s
[INFO] [stdout] 
[INFO] running `Command { std: "docker" "inspect" "6ae81d50ec8765ae98f7bff163d00cfce53406d174a2f7b3697b97e1ff7ebb64", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "6ae81d50ec8765ae98f7bff163d00cfce53406d174a2f7b3697b97e1ff7ebb64", kill_on_drop: false }`
[INFO] [stdout] 6ae81d50ec8765ae98f7bff163d00cfce53406d174a2f7b3697b97e1ff7ebb64
