[{"data":1,"prerenderedAt":554},["ShallowReactive",2],{"project-13245475":3},{"id":4,"name":5,"line":6,"line_source":7,"title":8,"url":9,"domain":10,"maker":11,"posted_at":12,"year":13,"points":14,"comments":15,"rank_in_year":16,"shown_in_year":17,"top":18,"tier":19,"category":20,"subcategory":21,"format":22,"keywords":23,"reception":27,"sentiment":28,"stance_mix":29,"scored_comments":34,"aspects":35,"strip":46,"post_text":49,"what":50,"said":84,"maker_in_thread":219,"shape":222,"grid":227,"attempts":517,"same_week":518,"maker_shows":18,"maker_hidden":546,"reader_version":547,"card":548},"13245475","Rocket","Web Framework for Rust","title","Show HN: Rocket – Web Framework for Rust","https:\u002F\u002Frocket.rs","rocket.rs","sbenitez",1482509898,2016,484,114,22,2264,1,"legend","languages","web framework","library",[24,25,26],"rust web framework","rust routing","type safe web","mixed",0.177,{"positive":30,"neutral":31,"mixed":32,"critical":33},20,25,0,11,56,{"design":36,"docs":39,"execution":40,"performance":41,"idea":42,"privacy":45},{"positive":37,"critical":38},8,6,{"positive":18,"critical":18},{"positive":32,"critical":32},{"positive":32,"critical":18},{"positive":43,"critical":44},4,2,{"positive":32,"critical":18},[47,32,32,32,47,43,48,48,32,43,18,47,32,32,32,48,32,32,48,18,48,48,32,32,48,47,48,43,18,47,47,47,48,32,18,48,44,18,43,48],3,5,null,{"problem":51,"audience":59,"pricing":49,"motivation":49,"time_to_build":49,"stack":70,"openness":82,"stage":83,"team_size":82},{"value":52,"source":53,"evidence":54},"Writing fast web applications in Rust with minimal code","commenter",[55],{"id":56,"by":57,"text":58},"13247476","rubyfan","I suppose this an advance for those already using Rust but the core message on the front page doesn't speak to me as a non-Rust person. FTA: Rocket is a web framework for Rust…",{"value":60,"source":61,"evidence":62},"Rust developers building web applications","inferred",[63,67],{"id":64,"by":65,"text":66},"13246437","aaron-lebo","Edit: should preface this by saying the framework looks really impressive. I've been looking for a Rust web framework to settle on and this is the most appealing. It's funny to…",{"id":68,"by":11,"text":69},"13246361","Yes! Here's what happens when you don't do the right thing: ``` error: 'id' is declared as an argument... --> src\u002Fmain.rs:8:9 | 8 | #[get(\"\u002F\u003Cid>\")] | ^^^^ error: ...but isn't in…",[71,78],{"value":72,"source":53,"evidence":73},"Rust",[74],{"id":75,"by":76,"text":77},"13247104","jonaf","edit: see replies to my comment. I mistook the Hyper pull request being merged for being in the latest release, but it isn't. Rocket uses Hyper for its HTTP server. So I checked…",{"value":79,"source":53,"evidence":80},"Hyper HTTP server",[81],{"id":75,"by":76,"text":77},"unknown","beta",{"praise":85,"objections":113,"requests":139,"questions":168,"alternatives":192},[86,94,103],{"value":87,"source":53,"evidence":88},"Route syntax with automatic data decoding is appealing",[89,93],{"id":90,"by":91,"text":92},"13246208","EugeneOZ","Syntax is amazing! Hope (so much) to see it possible on beta soon. Maybe for somebody it's not a new thing, but for me this: ``` struct Message { contents: String, }…",{"id":64,"by":65,"text":66},{"value":95,"source":96,"evidence":97},"Compile-time checking of route parameters","maker",[98,99],{"id":68,"by":11,"text":69},{"id":100,"by":101,"text":102},"13245709","eigenrick","This demonstrates the brilliance of Rust's syntax extensions. Not only is the code more readable and ergonomic, but also type safe. Errors or mismatches in implementations are…",{"value":104,"source":53,"evidence":105},"Resembles Flask and is easy for simple tasks",[106,110],{"id":107,"by":108,"text":109},"13246043","Manishearth","This looks very much like Flask, and Flask is one of my favorite ways of writing webapps because it's just so easy to do the simple things.",{"id":111,"by":76,"text":112},"13246934","Since you mentioned \"for somebody it's not a new thing\": this looks a lot like Flask, if you're into Python (except for the type safety); I'm sure there's a Ruby equivalent. It…",[114,128,135],{"value":115,"source":53,"evidence":116},"Metaprogramming and syntax extensions can hinder clarity and debugging",[117,121,124],{"id":118,"by":119,"text":120},"13246975","strictfp","Sorry but I cannot agree. I work on the JVM and this pattern is great for \"hello world\" webapps but breaks down pretty quickly. When large parts of your logic like metrics,…",{"id":122,"by":119,"text":123},"13247114","I've worked on everything you mention and more, and I find the simplicity of say node.js or SparkJava very refreshing when coming from metaprogramming frameworks. Once you go…",{"id":125,"by":126,"text":127},"13247659","amelius","Personally I don't like domain-specific sugared syntax. I prefer clarity above all, especially since I hope to spend the least possible amount of time in the networking domain,…",{"value":129,"source":53,"evidence":130},"Documentation is sparse and has hidden gotchas with forms",[131],{"id":132,"by":133,"text":134},"13259619","chias","Being very excited about another Rust web framework, I've been trying to use this for the last few days. While the basics seem very interesting, there's a few large stumbling…",{"value":136,"source":53,"evidence":137},"Landing page messaging does not explain why to use it",[138],{"id":56,"by":57,"text":58},[140,151,161],{"value":141,"source":53,"evidence":142},"Better documentation and examples",[143,147],{"id":144,"by":145,"text":146},"13246571","steveklabnik","We're in the process of addressing discoverability of the crates.io ecosystem, which led to this RFC: https:\u002F\u002Fgithub.com\u002Frust-lang\u002Frfcs\u002Fpull\u002F1824 A quote from it: > By far, the…",{"id":148,"by":149,"text":150},"13246372","FLUX-YOU","Just a comment on the pastebin example ( https:\u002F\u002Frocket.rs\u002Fguide\u002Fpastebin\u002F#uploading ): UUIDs seem like it would be easier to use for demonstration :…",{"value":152,"source":53,"evidence":153},"Support for async futures",[154,157],{"id":155,"by":65,"text":156},"13245967","It's my understanding that the current Rust web framework landscape is dealing with moving over to futures (example: https:\u002F\u002Fgithub.com\u002Fhyperium\u002Fhyper\u002Fissues\u002F934). The framework…",{"id":158,"by":159,"text":160},"13248840","wildchild","Single threaded? Why not use futures?",{"value":162,"source":53,"evidence":163},"Middleware or filters for cross-cutting concerns",[164],{"id":165,"by":166,"text":167},"13246687","jay-anderson","I didn't see it in the docs, but does there exist a concept similar to java's servlet filters. For instance to check apikeys globally, perform compression, input validation, etc.…",[169,181,185],{"value":170,"source":53,"evidence":171},"How security is handled compared to other frameworks",[172,176,180],{"id":173,"by":174,"text":175},"13246048","bronz","as someone who knows nothing about web development, does this framework emphasize security as much as rust itself does? how does this framework compare to other rust web…",{"id":177,"by":178,"text":179},"13248017","eveith","I am not a web development guy, so this question might seem ridiculous: To me, it always seems that there are a lot of hazards in any web development project, security-wise: A…",{"id":75,"by":76,"text":77},{"value":182,"source":53,"evidence":183},"Benchmarks and performance at the bottom of the stack",[184],{"id":155,"by":65,"text":156},{"value":186,"source":53,"evidence":187},"Whether Rust is simple enough for scripting like Python",[188],{"id":189,"by":190,"text":191},"13246131","johnwheeler","One of my influences, Armin Ronacher, has been doing a lot of Rust work lately, so I've been thinking about looking at it more closely since I appreciate his Python tastes. Is…",[193,198,205,212],{"value":194,"source":53,"evidence":195},"Flask",[196,197],{"id":111,"by":76,"text":112},{"id":107,"by":108,"text":109},{"value":199,"source":53,"evidence":200},"Sinatra and Express",[201],{"id":202,"by":203,"text":204},"13246555","k__","Syntax is why sinatra and express got bit. Just add a callback for your route and off you go.",{"value":206,"source":53,"evidence":207},"Jersey and Spring",[208,209],{"id":111,"by":76,"text":112},{"id":210,"by":76,"text":211},"13247062","I've worked a lot with this pattern in Python (Flask), Java and Scala. I have found it a little inconvenient beyond the simple hello world app when dealing with Flask, but I…",{"value":213,"source":53,"evidence":214},"Play framework",[215],{"id":216,"by":217,"text":218},"13248168","kev009","This looks pretty nice, it reminds me of Play! framework for Scala. I am curious to see if Rust or Swift will prevail for this kind of thing. Both have the opportunity to reach…",{"comments":18,"answered":18,"key":220},[221],{"id":68,"text":69},{"commenters":223,"max_depth":224,"maker_replies":18,"first_comment_mins":225,"lifespan_hours":226},70,9,36,169,[228,230,234,237,241,243,246,249,252,255,258,260,262,265,267,269,271,274,277,279,280,282,285,288,290,292,294,298,300,302,305,307,308,309,311,312,313,315,317,320,322,325,327,331,333,336,337,339,341,343,346,348,351,354,357,360,362,364,367,370,373,375,377,379,381,384,386,389,391,394,395,398,401,403,406,407,410,413,416,418,422,425,428,430,432,436,439,441,444,446,448,450,453,454,457,460,463,467,470,472,475,477,479,484,487,489,492,495,498,502,505,509,512,516],[177,32,47,229,178,32],"project\u002Fneutral\u002Fnone",[231,32,32,232,233,32],"13248298","other\u002Fneutral\u002Fnone","girvo",[235,32,32,232,236,32],"13248331","peller",[238,32,32,239,240,32],"13248424","commenter\u002Fneutral\u002Fnone","andrewstuart2",[242,32,32,239,236,32],"13248429",[244,32,32,232,245,32],"13253443","technion",[247,32,32,232,248,32],"13248502","aban",[250,32,32,232,251,32],"13248914","iopq",[253,32,32,232,254,32],"13251908","petilon",[256,32,32,239,257,32],"13255372","paulddraper",[259,32,32,239,251,32],"13256507",[261,32,32,239,248,32],"13258308",[263,32,47,229,264,32],"13249024","SkyMarshal",[266,32,32,239,178,32],"13258158",[268,32,47,229,133,32],"13249448",[270,32,47,229,145,32],"13249479",[272,32,48,273,133,32],"13249505","project\u002Fpositive\u002Fnone",[275,32,32,232,276,32],"13249923","tim333",[90,18,48,278,91,32],"project\u002Fpositive\u002Fdesign",[64,18,48,278,65,32],[202,18,47,281,203,32],"project\u002Fneutral\u002Fdesign",[283,18,32,239,284,32],"13246660","cpeterso",[286,18,32,232,287,32],"13246776","zackify",[289,18,32,232,203,32],"13247368",[291,18,32,232,284,32],"13250097",[144,18,47,293,145,32],"project\u002Fneutral\u002Fdocs",[295,18,48,296,297,32],"13246615","maker\u002Fpositive\u002Fnone","CorvusCrypto",[299,18,47,281,91,32],"13247102",[125,18,18,301,126,32],"project\u002Fcritical\u002Fdesign",[303,18,32,304,251,32],"13247786","commenter\u002Fneutral\u002Fdesign",[306,18,32,304,126,32],"13247818",[111,18,48,278,76,32],[118,18,18,301,119,32],[310,18,32,304,91,32],"13247042",[210,18,32,304,76,32],[122,18,32,304,119,32],[314,18,32,304,76,32],"13247192",[316,18,32,304,119,32],"13247273",[318,18,32,304,319,32],"13247753","oxymoron",[321,18,32,304,119,32],"13285383",[323,18,32,304,324,32],"13247527","l1ambda",[326,18,32,304,119,32],"13249074",[328,18,48,329,330,32],"13247140","project\u002Fpositive\u002Fdocs","namelezz",[332,18,48,278,119,32],"13247171",[334,18,48,278,335,32],"13248457","bwblabs",[189,44,32,232,190,32],[338,44,32,232,145,32],"13246155",[340,44,32,232,108,32],"13246245",[342,44,32,232,190,32],"13246308",[344,44,32,232,345,32],"13246368","Cyph0n",[347,44,32,232,145,32],"13246409",[349,44,32,232,350,32],"13247528","jdright",[352,44,48,273,353,32],"13246381","DougBTX",[355,44,32,232,356,32],"13246351","eutectic",[358,44,18,301,359,32],"13246677","the_duke",[361,44,18,301,108,32],"13246715",[363,44,32,232,251,32],"13248928",[365,44,32,239,366,32],"13250725","codygman",[368,44,48,273,369,32],"13247770","stymaar",[371,44,48,273,372,32],"13246305","valarauca1",[374,44,32,239,145,32],"13246397",[376,44,32,239,359,32],"13246634",[378,44,32,239,145,32],"13246640",[380,44,32,239,108,32],"13246727",[382,44,32,239,383,32],"13246939","burntsushi",[385,44,32,232,65,32],"13246385",[387,44,32,232,388,32],"13246560","akiselev",[390,44,32,239,190,32],"13246693",[392,44,32,232,393,32],"13246723","cmyr",[100,47,48,278,101,32],[396,47,47,397,108,32],"13245975","project\u002Fneutral\u002Fexecution",[399,47,47,229,400,32],"13246076","erickt",[402,47,47,229,145,32],"13246107",[404,43,47,281,405,32],"13246321","halestock",[68,43,32,281,11,18],[408,43,48,278,409,32],"13247345","jtmarmon",[411,43,47,281,412,32],"13249402","chrismorgan",[414,48,48,278,415,32],"13246053","bfrog",[75,38,47,417,76,32],"project\u002Fneutral\u002Fperformance",[419,38,32,420,421,32],"13247141","commenter\u002Fneutral\u002Fperformance","tatterdemalion",[423,38,32,420,424,32],"13248228","bbatha",[132,426,18,427,133,32],7,"project\u002Fcritical\u002Fdocs",[165,37,47,429,166,32],"project\u002Fneutral\u002Fidea",[56,224,18,431,57,32],"project\u002Fcritical\u002Fidea",[433,224,48,434,435,32],"13247524","project\u002Fpositive\u002Fidea","danappelxx",[437,224,48,434,438,32],"13247526","kiliancs",[440,224,18,431,251,32],"13247766",[442,224,32,232,443,32],"13247778","ekidd",[445,224,32,232,412,32],"13249407",[155,447,47,417,65,32],10,[449,447,47,417,145,32],"13246020",[451,447,47,417,452,32],"13246082","asp2insp",[107,33,48,434,108,32],[455,33,32,232,456,32],"13246185","ergo14",[458,33,32,239,459,32],"13247907","lukasm",[461,33,32,239,462,32],"13253334","fredsir",[464,465,18,301,466,32],"13247772",12,"sidlls",[468,465,47,281,469,32],"13247795","adamnemecek",[471,465,18,301,466,32],"13247819",[473,465,32,474,409,32],"13248131","commenter\u002Fpositive\u002Fdesign",[148,476,47,293,149,32],13,[216,478,48,434,217,32],14,[480,481,18,482,483,32],"13248501",15,"project\u002Fcritical\u002Fperformance","callumjones",[485,486,47,429,126,32],"13249410",16,[488,486,47,429,412,32],"13249431",[490,486,32,239,491,32],"13249455","qz_",[173,493,47,494,174,32],17,"project\u002Fneutral\u002Fprivacy",[496,493,18,497,145,32],"13246644","project\u002Fcritical\u002Fprivacy",[499,500,47,281,501,32],"13247875",18,"nnutter",[503,500,47,281,504,32],"13248304","anonova",[506,507,48,273,508,32],"13248441",19,"Halienja",[510,30,32,232,511,32],"13247593","dom0",[513,514,48,273,515,32],"13246197",21,"architbhise",[158,16,47,417,159,32],[],[519,524,528,533,538,542],{"id":520,"name":521,"points":522,"category":523},"13244827","Wick",322,"creative",{"id":525,"name":526,"points":527,"category":523},"13254029","ThreadTone",303,{"id":529,"name":530,"points":531,"category":532},"13254342","8bitworkshop",289,"dev_tools",{"id":534,"name":535,"points":536,"category":537},"13259429","Thimble",272,"learning_science",{"id":539,"name":540,"points":541,"category":532},"13259000","Mitmproxy 1.0 released",248,{"id":543,"name":544,"points":545,"category":532},"13245343","Code.hackmit.org",140,false,"v2",{"id":549,"name":5,"line":6,"ai":546,"cat":20,"year":13,"points":14,"comments":15,"rec":27,"s":550,"top":18,"kw":551,"maker":11,"domain":10,"tier":19,"attempts":32,"strip":552,"url":9,"mix":553,"praise":87,"objection":115,"sub":21},13245475,0.18,[24,25,26],"3000345504130005005155005354133350152145",[30,31,32,33],1793990952227]