diff options
| author | William Venner <[email protected]> | 2021-03-16 03:42:11 +0000 |
|---|---|---|
| committer | William Venner <[email protected]> | 2021-03-16 03:42:11 +0000 |
| commit | 2af78fbabefec4bf254570ec8c2782ccc20b153a (patch) | |
| tree | add513473708dc5198679b7261f55116f1eeaf26 | |
| parent | Merge pull request #33 from WilliamVenner/ugc-stats (diff) | |
| download | steamworks-rs-2af78fbabefec4bf254570ec8c2782ccc20b153a.tar.xz steamworks-rs-2af78fbabefec4bf254570ec8c2782ccc20b153a.zip | |
Add ugc iter_maybe
| -rw-r--r-- | src/ugc.rs | 9 |
1 files changed, 7 insertions, 2 deletions
@@ -844,8 +844,7 @@ impl<'a> QueryResults<'a> { let ok = sys::SteamAPI_ISteamUGC_GetQueryUGCResult(self.ugc, self.handle, index, &mut raw_details); debug_assert!(ok); - // TODO: is this always true? we don't get this from an async call... - debug_assert!(raw_details.m_eResult == sys::EResult::k_EResultOK); + if raw_details.m_eResult != sys::EResult::k_EResultOK { return None } let tags = CStr::from_ptr(raw_details.m_rgchTags.as_ptr()) .to_string_lossy() @@ -886,6 +885,12 @@ impl<'a> QueryResults<'a> { (0..self.returned_results()) .map(move |i| self.get(i).unwrap()) } + + /// Returns an iterator that runs over all the fetched results, but doesn't panic if one of those results failed + pub fn iter_maybe<'b>(&'b self) -> impl Iterator<Item=Option<QueryResult>> + 'b { + (0..self.returned_results()) + .map(move |i| self.get(i)) + } } /// Query result |