diff --git a/src/game.rs b/src/game.rs index b036f3c3..b87be547 100644 --- a/src/game.rs +++ b/src/game.rs @@ -172,7 +172,7 @@ pub fn symbols() -> JsHashMap { /// [Screeps documentation](http://docs.screeps.com/api/#Game.getObjectById) pub fn get_object_by_js_id_typed(id: &JsObjectId) -> Option where - T: MaybeHasId, + T: MaybeHasId + JsCast, { Game::get_object_by_id(&id.raw).map(JsCast::unchecked_into) } @@ -183,7 +183,7 @@ where /// [Screeps documentation](http://docs.screeps.com/api/#Game.getObjectById) pub fn get_object_by_id_typed(id: &ObjectId) -> Option where - T: MaybeHasId, + T: MaybeHasId + JsCast, { // construct a reference to a javascript string using the id data let js_str = JsString::from(id.to_string()); diff --git a/src/js_collections.rs b/src/js_collections.rs index 575b2682..5357ef9c 100644 --- a/src/js_collections.rs +++ b/src/js_collections.rs @@ -241,7 +241,7 @@ impl JsObjectId { /// don't have vision for. pub fn resolve(&self) -> Option where - T: MaybeHasId, + T: MaybeHasId + JsCast, { game::get_object_by_js_id_typed(self) } diff --git a/src/local/object_id.rs b/src/local/object_id.rs index e4f8733d..d01021ef 100644 --- a/src/local/object_id.rs +++ b/src/local/object_id.rs @@ -169,7 +169,7 @@ impl ObjectId { /// we don't have vision for. pub fn try_resolve(self) -> Result, RoomObject> where - T: MaybeHasId, + T: MaybeHasId + JsCast, { match game::get_object_by_id_erased(&self.raw) { Some(v) => v.dyn_into().map(|v| Some(v)), @@ -186,7 +186,7 @@ impl ObjectId { /// don't have vision for. pub fn resolve(self) -> Option where - T: MaybeHasId, + T: MaybeHasId + JsCast, { game::get_object_by_id_typed(&self) } diff --git a/src/traits.rs b/src/traits.rs index 389756d5..6f78a242 100644 --- a/src/traits.rs +++ b/src/traits.rs @@ -86,7 +86,7 @@ pub trait HasId: MaybeHasId { /// Trait for all game objects which may (or may not) have an associated unique /// identifier. -pub trait MaybeHasId: JsCast { +pub trait MaybeHasId { /// Object ID of the object, which can be used to efficiently fetch a /// fresh reference to the object on subsequent ticks, or `None` if the /// object doesn't currently have an ID. @@ -123,7 +123,7 @@ pub trait MaybeHasId: JsCast { impl MaybeHasId for T where - T: HasId + JsCast, + T: HasId, { fn try_js_raw_id(&self) -> Option { Some(self.js_raw_id())