From d9a75f31a93612dbca20e7fdbb2fadf5e01cf033 Mon Sep 17 00:00:00 2001 From: Raghu Saxena Date: Thu, 27 Jun 2024 12:38:21 +0800 Subject: [PATCH 1/3] move from boxing to impl trait --- src/trackers/mod.rs | 2 +- src/trackers/torrentleech.rs | 6 +++--- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/src/trackers/mod.rs b/src/trackers/mod.rs index 5c15395..4e165a4 100644 --- a/src/trackers/mod.rs +++ b/src/trackers/mod.rs @@ -6,5 +6,5 @@ pub trait Torrent: std::fmt::Debug { } pub trait Tracker { - fn parse_message(msg: &str) -> Option>; + fn parse_message(msg: &str) -> Option; } diff --git a/src/trackers/torrentleech.rs b/src/trackers/torrentleech.rs index 20b166a..b608671 100644 --- a/src/trackers/torrentleech.rs +++ b/src/trackers/torrentleech.rs @@ -18,7 +18,7 @@ impl super::Torrent for TorrentleechTorrent { impl super::Tracker for TorrentleechTracker { - fn parse_message(msg: &str) -> Option> { + fn parse_message(msg: &str) -> Option { // println!("Going ot par") let name_start_index = msg.find("Name:'")?; let name_end_index = msg.find("' uploaded by '")?; @@ -32,11 +32,11 @@ impl super::Tracker for TorrentleechTracker { } }; - Some(Box::new(TorrentleechTorrent{ + Some(TorrentleechTorrent{ name: msg[name_start_index+6..name_end_index].to_owned(), uploader: msg[name_end_index+15..uploader_end_index].to_owned(), url: msg[uploader_end_index+lenn..].to_owned(), freeleech: freeleech, - })) + }) } } \ No newline at end of file From 65aff972106998c8900d409878176c3ab52353ea Mon Sep 17 00:00:00 2001 From: Raghu Saxena Date: Thu, 27 Jun 2024 12:43:57 +0800 Subject: [PATCH 2/3] Update implementation to return impl trait in signature instead of concrete type --- src/trackers/torrentleech.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/trackers/torrentleech.rs b/src/trackers/torrentleech.rs index b608671..8dca22e 100644 --- a/src/trackers/torrentleech.rs +++ b/src/trackers/torrentleech.rs @@ -18,7 +18,7 @@ impl super::Torrent for TorrentleechTorrent { impl super::Tracker for TorrentleechTracker { - fn parse_message(msg: &str) -> Option { + fn parse_message(msg: &str) -> Option { // println!("Going ot par") let name_start_index = msg.find("Name:'")?; let name_end_index = msg.find("' uploaded by '")?; From 93691681ecafa022c66863ec2fbd40c0ce414d71 Mon Sep 17 00:00:00 2001 From: Raghu Saxena Date: Thu, 27 Jun 2024 15:43:21 +0800 Subject: [PATCH 3/3] Embedded type --- src/trackers/mod.rs | 4 +++- src/trackers/torrentleech.rs | 4 +++- 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/src/trackers/mod.rs b/src/trackers/mod.rs index 4e165a4..02bcd86 100644 --- a/src/trackers/mod.rs +++ b/src/trackers/mod.rs @@ -6,5 +6,7 @@ pub trait Torrent: std::fmt::Debug { } pub trait Tracker { - fn parse_message(msg: &str) -> Option; + type Torrent: Torrent; + + fn parse_message(msg: &str) -> Option; } diff --git a/src/trackers/torrentleech.rs b/src/trackers/torrentleech.rs index 8dca22e..bf0a7a7 100644 --- a/src/trackers/torrentleech.rs +++ b/src/trackers/torrentleech.rs @@ -18,7 +18,9 @@ impl super::Torrent for TorrentleechTorrent { impl super::Tracker for TorrentleechTracker { - fn parse_message(msg: &str) -> Option { + type Torrent = TorrentleechTorrent; + + fn parse_message(msg: &str) -> Option { // println!("Going ot par") let name_start_index = msg.find("Name:'")?; let name_end_index = msg.find("' uploaded by '")?;