{"status":"ok","message-type":"work","message-version":"1.0.0","message":{"indexed":{"date-parts":[[2026,7,16]],"date-time":"2026-07-16T10:10:35Z","timestamp":1784196635611,"version":"3.55.0"},"reference-count":32,"publisher":"Association for Computing Machinery (ACM)","issue":"PLDI","license":[{"start":{"date-parts":[[2025,6,13]],"date-time":"2025-06-13T00:00:00Z","timestamp":1749772800000},"content-version":"vor","delay-in-days":3,"URL":"http:\/\/www.acm.org\/publications\/policies\/copyright_policy#Background"}],"funder":[{"DOI":"10.13039\/100000001","name":"NSF","doi-asserted-by":"publisher","award":["CCF-2227863"],"award-info":[{"award-number":["CCF-2227863"]}],"id":[{"id":"10.13039\/100000001","id-type":"DOI","asserted-by":"publisher"}]},{"DOI":"10.13039\/100000185","name":"Defense Advanced Research Projects Agency","doi-asserted-by":"publisher","award":["HR00112420354"],"award-info":[{"award-number":["HR00112420354"]}],"id":[{"id":"10.13039\/100000185","id-type":"DOI","asserted-by":"publisher"}]}],"content-domain":{"domain":["dl.acm.org"],"crossmark-restriction":true},"short-container-title":["Proc. ACM Program. Lang."],"published-print":{"date-parts":[[2025,6,10]]},"abstract":"<jats:p>\n                    Compiler diagnostics for type inference failures are notoriously bad, and type classes only make the problem worse. By introducing a complex search process during inference, type classes can lead to wholly inscrutable or useless errors. We describe a system,\n                    <jats:sc>Argus<\/jats:sc>\n                    , for interactively visualizing type class inferences to help programmers debug inference failures, applied specifically to Rust\u2019s trait system. The core insight of\n                    <jats:sc>Argus<\/jats:sc>\n                    is to avoid the traditional model of compiler diagnostics as one-size-fits-all, instead providing the programmer with different views on the search tree corresponding to different debugging goals.\n                    <jats:sc>Argus<\/jats:sc>\n                    carefully uses defaults to improve debugging productivity, including interface design (e.g., not showing full paths of types by default) and heuristics (e.g., sorting obligations based on the expected complexity of fixing them). We evaluated\n                    <jats:sc>Argus<\/jats:sc>\n                    in a user study where\n                    <jats:italic toggle=\"yes\">N<\/jats:italic>\n                    = 25 participants debugged type inference failures in realistic Rust programs, finding that participants using\n                    <jats:sc>Argus<\/jats:sc>\n                    correctly localized 2.2\u00d7 as many faults and localized 3.3\u00d7 faster compared to not using\n                    <jats:sc>Argus<\/jats:sc>\n                    .\n                  <\/jats:p>","DOI":"10.1145\/3729302","type":"journal-article","created":{"date-parts":[[2025,6,13]],"date-time":"2025-06-13T16:02:27Z","timestamp":1749830547000},"page":"1293-1314","update-policy":"https:\/\/doi.org\/10.1145\/crossmark-policy","source":"Crossref","is-referenced-by-count":1,"title":["An Interactive Debugger for Rust Trait Errors"],"prefix":"10.1145","volume":"9","author":[{"ORCID":"https:\/\/orcid.org\/0000-0002-2960-1198","authenticated-orcid":false,"given":"Gavin","family":"Gray","sequence":"first","affiliation":[{"name":"Brown University, Providence, USA"}],"role":[{"vocabulary":"crossref","role":"author"}]},{"ORCID":"https:\/\/orcid.org\/0000-0001-8639-6541","authenticated-orcid":false,"given":"Will","family":"Crichton","sequence":"additional","affiliation":[{"name":"Brown University, Providence, USA"}],"role":[{"vocabulary":"crossref","role":"author"}]},{"ORCID":"https:\/\/orcid.org\/0000-0001-5184-1975","authenticated-orcid":false,"given":"Shriram","family":"Krishnamurthi","sequence":"additional","affiliation":[{"name":"Brown University, Providence, USA"}],"role":[{"vocabulary":"crossref","role":"author"}]}],"member":"320","published-online":{"date-parts":[[2025,6,13]]},"reference":[{"key":"e_1_3_2_2_2","unstructured":"2022. E0275: Overflow evaluating the requirement with a generic impl. https:\/\/users.rust-lang.org\/t\/eO275-overflow-evaluating-the-requirement-with-a-generic-impl\/73211."},{"key":"e_1_3_2_3_2","unstructured":"2024. bevyengine\/bevy: A refreshingly simple data-driven game engine built in Rust. https:\/\/github.com\/bevyengine\/bevy\/."},{"key":"e_1_3_2_4_2","unstructured":"2024. diesel-rs\/diesel: A safe extensible ORM and Query Builder for Rust. https:\/\/github.com\/diesel-rs\/diesel."},{"key":"e_1_3_2_5_2","unstructured":"2024. rust-lang\/chalk: An implementation and definition of the Rust trait system using a PROLOG-like logic solver. https:\/\/github.com\/rust-lang\/chalk."},{"key":"e_1_3_2_6_2","unstructured":"2024. tokio-rs\/axum: Ergonomic and modular web framework built with Tokio Tower and Hyper. https:\/\/github.com\/tokio-rs\/axum."},{"key":"e_1_3_2_7_2","doi-asserted-by":"publisher","DOI":"10.1145\/3236024.3236040"},{"key":"e_1_3_2_8_2","doi-asserted-by":"publisher","DOI":"10.1145\/3622812"},{"key":"e_1_3_2_9_2","unstructured":"Ida Borisova. 2024. Unofficial Bevy Cheat Book. online Chapter 4.3. https:\/\/bevy-cheatbook.github.io\/pitfalls\/into-system.html#obscure-rust-compiler-errors"},{"key":"e_1_3_2_10_2","doi-asserted-by":"publisher","DOI":"10.1145\/3341695"},{"key":"e_1_3_2_11_2","doi-asserted-by":"publisher","DOI":"10.1145\/3622841"},{"key":"e_1_3_2_12_2","doi-asserted-by":"publisher","DOI":"10.1016\/S0020-7373(86)80020-7"},{"key":"e_1_3_2_13_2","volume-title":"Abstract Views of Prolog Executions in Opium. Research Report RR-3531","author":"Ducass\u00e9 Mireille","year":"1998","unstructured":"Mireille Ducass\u00e9. 1998. Abstract Views of Prolog Executions in Opium. Research Report RR-3531. INRIA. https:\/\/inria.hal.science\/inria-00073154"},{"key":"e_1_3_2_14_2","doi-asserted-by":"publisher","DOI":"10.1016\/0743-1066(88)90001-5"},{"key":"e_1_3_2_15_2","doi-asserted-by":"publisher","DOI":"10.1145\/231379.231387"},{"key":"e_1_3_2_16_2","doi-asserted-by":"publisher","DOI":"10.1109\/ICPC58990.2023.00029"},{"key":"e_1_3_2_17_2","doi-asserted-by":"publisher","unstructured":"Gavin Gray. 2025. gavinleroy\/pldi25-artifact: v2.2.0. doi:10.5281\/zenodo.15226307","DOI":"10.5281\/zenodo.15226307"},{"key":"e_1_3_2_18_2","doi-asserted-by":"publisher","DOI":"10.1145\/944705.944707"},{"key":"e_1_3_2_19_2","unstructured":"Jakob Hellermann. 2024. bevycheck. https:\/\/github.com\/jakobhellermann\/bevycheck."},{"key":"e_1_3_2_20_2","unstructured":"Cognitive Engineering Lab. 2025. Argus: an IDE extension for debugging trait errors in Rust. https:\/\/github.com\/cognitive-engineering-lab\/argus."},{"key":"e_1_3_2_21_2","doi-asserted-by":"publisher","DOI":"10.1145\/2983990.2983994"},{"key":"e_1_3_2_22_2","doi-asserted-by":"publisher","DOI":"10.1145\/2660193.2660230"},{"key":"e_1_3_2_23_2","doi-asserted-by":"publisher","DOI":"10.1007\/3-540-54415-1_70"},{"key":"e_1_3_2_24_2","doi-asserted-by":"publisher","DOI":"10.1109\/MCG.2011.103"},{"key":"e_1_3_2_25_2","doi-asserted-by":"publisher","DOI":"10.1145\/3138818"},{"key":"e_1_3_2_26_2","unstructured":"Georg Semmler. 2022. Rust Foundation Project Grant 2022. https:\/\/github.com\/weiznich\/rust-foundation-community-grant."},{"key":"e_1_3_2_27_2","unstructured":"Georg Semmler. 2023. The diagnostic attribute namespace. https:\/\/github.com\/rust-lang\/rfcs\/pull\/3368."},{"key":"e_1_3_2_28_2","doi-asserted-by":"publisher","DOI":"10.1109\/WVL.1991.238854"},{"key":"e_1_3_2_29_2","doi-asserted-by":"publisher","DOI":"10.5555\/910586"},{"key":"e_1_3_2_30_2","doi-asserted-by":"publisher","DOI":"10.1145\/871895.871903"},{"key":"e_1_3_2_31_2","doi-asserted-by":"publisher","DOI":"10.1145\/75277.75283"},{"key":"e_1_3_2_32_2","doi-asserted-by":"publisher","DOI":"10.1145\/512644.512648"},{"key":"e_1_3_2_33_2","doi-asserted-by":"publisher","DOI":"10.1145\/2737924.2738009"}],"container-title":["Proceedings of the ACM on Programming Languages"],"original-title":[],"language":"en","link":[{"URL":"https:\/\/dl.acm.org\/doi\/pdf\/10.1145\/3729302","content-type":"application\/pdf","content-version":"vor","intended-application":"syndication"},{"URL":"https:\/\/dl.acm.org\/doi\/pdf\/10.1145\/3729302","content-type":"unspecified","content-version":"vor","intended-application":"similarity-checking"}],"deposited":{"date-parts":[[2026,7,16]],"date-time":"2026-07-16T10:02:17Z","timestamp":1784196137000},"score":1,"resource":{"primary":{"URL":"https:\/\/dl.acm.org\/doi\/10.1145\/3729302"}},"subtitle":[],"short-title":[],"issued":{"date-parts":[[2025,6,10]]},"references-count":32,"journal-issue":{"issue":"PLDI","published-print":{"date-parts":[[2025,6,10]]}},"alternative-id":["10.1145\/3729302"],"URL":"https:\/\/doi.org\/10.1145\/3729302","relation":{},"ISSN":["2475-1421"],"issn-type":[{"value":"2475-1421","type":"electronic"}],"subject":[],"published":{"date-parts":[[2025,6,10]]},"assertion":[{"value":"2024-11-14","order":0,"name":"received","label":"Received","group":{"name":"publication_history","label":"Publication History"}},{"value":"2025-03-06","order":2,"name":"accepted","label":"Accepted","group":{"name":"publication_history","label":"Publication History"}},{"value":"2025-06-13","order":3,"name":"published","label":"Published","group":{"name":"publication_history","label":"Publication History"}}]}}