RUST勉強中、8/13の積み上げ

前回の続き。

indexにダミーデータを使用していましたが、

この部分を実際のDBのデータを表示するようにしています。

use actix_web::{get, web, App, HttpResponse, HttpServer, ResponseError};
use thiserror::Error;
use askama::Template;
use r2d2::Pool;
use r2d2_sqlite::SqliteConnectionManager;
use rusqlite::params;

struct TodoEntry {
    id: u32,
    text: String,
}

#[derive(Template)]
#[template(path = "index.html")]
struct IndexTemplate {
    entries: Vec<TodoEntry>,
}

#[derive(Error, Debug)]
enum MyError {
    #[error("Failed to render HTML")]
    AskamaError(#[from] askama::Error),

    #[error("Failed to get connection")]
    ConnectionPoolError(#[from] r2d2::Error),

    #[error("Failed SQL execution")]
    SqliteError(#[from] rusqlite::Error),
}

impl ResponseError for MyError {}

#[get("/")]
async fn index(db: web::Data<Pool<SqliteConnectionManager>>) -> Result<HttpResponse, MyError> {
    let conn = db.get()?;
    let mut statement = conn.prepare("SELECT id, text FROM todo")?;
    let rows = statement.query_map(params![], |row| {
        let id = row.get(0)?;
        let text = row.get(1)?;
        Ok(TodoEntry { id, text })
    })?;

    let mut entries = Vec::new();
    for row in rows {
        entries.push(row?);
    }

    let html = IndexTemplate { entries };
    let response_body = html.render()?;
    Ok(HttpResponse::Ok()
        .content_type("text/html")
        .body(response_body))
}



#[actix_rt::main]
async fn main() -> Result<(), actix_web::Error> {
    let manager = SqliteConnectionManager::file("todo.db");
    let pool = Pool::new(manager).expect("Failed to inithialize the connection pool.");
    let conn = pool.get().expect("Failed to get the connection from the pool.");
    conn.execute(
        "CREATE TABLE IF NOT EXISTS todo (
            id INTEGER PRIMARY KEY AUTOINCREMENT,
            text TEXT NOT NULL
        )",
        params![],
    )
    .expect("Failed to create a table 'todo'.");
    HttpServer::new(move || App::new().service(index).app_data(pool.clone()))
        .bind("0.0.0.0:8080")?
        .run()
        .await?;
    Ok(())
}

前回の記事で、

テキストではdata(pool.clone())を使用していましたが、
ワーニングが出るので、調べたところ、
推奨されていない処理なので、app_dataを使え、と言うことでした。

と書きましたが、

app_data()を使用するとうまく動作せず、

解決策が見つからないので、

ひとまずdata()に戻しています。

経済ニュース(08/14)

塩野義製薬コロナ飲み薬、効果の検証慎重に – 日本経済新聞

塩野義製薬の新型コロナウイルス用飲み薬「ゾコーバ」を巡り、厚生労働省の審議会は緊急承認を見送った。国産薬に期待する声もあったが、データが不十分と判断した。緊急承認制度は5月施行の改正医薬品医療機器法(薬機法)で創設されたばかり。制度設計に携わった福井次矢・東京医科大学茨城医療センター病院長に見解を聞いた。厚労省が2021年11~12月に開いた医薬品医療機器制度部会で、部会長として緊急承認制度の

夏場の旧車オーナーに切実な「クーラー冷媒ガス」問題! 「R12」時代のクーラーを使い続けるには?(Auto Messe Web)(ヘッドライン) | 自動車情報サイト【新車・中古車】 – carview! – carview!

供給が絶えて久しい1990年代までの「R12」ガス 1990年代までの旧車、ネオヒストリックの維持で頭が痛いのが、クーラーガスの問題だ。1960年代からオプションながらクーラーが用意されていたり、サンデンの「レザム」などの後付けクーラーもあ…(ヘッドライン)

2023年型レクサスGX460 ブラックライン・エディション発表 日本未発売モデル – http://www.autocar.jp/

北米レクサスはランドクルーザー・プラドの兄弟車でもあるGX460の2023年モデルを発表、ブラックライン・エディションを追加します。

マツダ6 プリウス FRクラウン!!! これから出る新型セダン&ワゴンのスクープ情報総まとめ!!(ベストカーWeb) | 自動車情報サイト【新車・中古車】 – carview! – carview!

長らく正統派セダンを貫いてきたトヨタ クラウンが(セダンタイプも残るとはいえ)大きく変貌を遂げたことで、今後ますますラインナップが減るのでは……? と心配する声も多く聞こえる国産セダン市場。 しかしながら、各社からセダンの新型モデルの登場…

台風で倒木?止まりきれずJR衝突 – goo.ne.jp

13日午後9時35分頃、茨城県ひたちなか市津田のJR水郡線後台―常陸津田駅間で、上り列車(2両編成)が線路上の倒木に衝突した。11人の乗客がいたが、けがはなかっ…

大雨や台風、交通機関に乱れ 内陸線など一部運転見合わせ|秋田魁新報電子版 – 秋田魁新報電子版

大雨による秋田県内の鉄道への影響が続いている。

42歳、一刻も早く退社し年収100万円程度で暮らしたい – Yahoo!ファイナンス

金融資産8000万円でセミリタイアは可能でしょうか?皆さんから寄せられた家計の悩みにお答えする、その名も「マネープランクリニック」。今回の相談者は、退職してセミリタイアを希望する40代の男性会社員。ファイナンシャル・プランナーの深野康彦さんがアドバイスします。相談者バッジョさん(…

コロナアプリ個人情報、上海で4850万人分流出か…ハッカーが販売意向示す – 読売新聞オンライン

【北京=比嘉清太】香港英字紙サウスチャイナ・モーニングポスト(電子版)などは13日、中国・上海市の新型コロナウイルス対策アプリのシステム上に登録された4850万人分の個人情報が、インターネット上に流出した疑いがあると伝

東京湾アクアラインが通行止めに 台風8号の強風で(2022年8月13日) – ANNnewsCH

台風の影響で、お盆期間の交通に影響が出ています。 JR東海によりますと、東海道新幹線は13日朝に一時、運転を見合わせましたが、その後も遅れが続き、最大で56分の遅れが出て約9万2000人に影響が出ました。 空の便は羽田空港発着を中心に全日空が108便、日本航空が23便の欠航になりました。 高速道路は静岡県内の東名…

SlackやTeams値上げ相次ぐ 成長鈍化、開発コスト転嫁 – 日本経済新聞

オンライン会議やチャットに使うビジネス向け連絡ツールの値上げが広がっている。米マイクロソフトの「Teams(チームズ)」や国内向けの「チャットワーク」に続き、米企業の「Slack(スラック)」も最安の有料プランの1割値上げを発表。ビデオ会議の「Zoom(ズーム)」は無料版で一律の時間制限を設けた。ビジネスツールは新型コロナウイルス下の在宅勤務で利用企業が急増したが、足元では成長速度が鈍化してい

2023年型「スバル・アセント」の価格が発表! エクステリアを一新し、最新の安全技術を搭載したスバルのラージサイズSUV。 – MotorFan[モーターファン]

米国スバルが、2023年型の新型「アセント」の価格を発表した。2.4L BOXERターボエンジとスバル・シンメトリカルAWDシステム、X-MODEが全車標準装備され、過酷な環境化でも優れた走破性を実現。それでいて、最大8人乗りの3列シートに、3列ごとのクライメートシステム、USB充電ポートが標準装備され、居住性と使い勝手に優れている。普段使いにももってこいのオールラウンダーSUVだ。

ホンダ「フィット」なぜ販売が伸び悩む? 歴代オーナーに聞く「現行モデルに乗り換えない」理由(くるまのニュース) | 自動車情報サイト【新車・中古車】 – carview! – carview!

■大ヒットを宿命づけられた「フィット」「フィット」といえば、ホンダの屋台骨を支えるコンパクトカーです。 2001年に登場した初代モデルは、最初の1か月で4万8000台もの受注を記録。累計販売台数は半年後に10万台を超え、デビューから1年経た…

「第7波」影響 各業種にも波及 – Au Webポータル

au Webポータル

来週の相場で注目すべき3つのポイント:米FOMC議事録、米中小売売上高、米ウォルマート決算 – Yahoo!ファイナンス

■株式相場見通し

予想レンジ:上限28900円-下限28000円…

全長6m超? 日産「タイタン」に黒強調「ミッドナイト仕様 」が登場 – ライブドアニュース – livedoor

巨大なピックアップトラック「タイタン」に2023年モデル日産の米国法人は2022年8月11日、「タイタン」の2023年モデルを発表しました。タイタンは、高い走行性能とクラストップレベルの装備を備えたフルサイズピ

物価高、低所得ほど家計の重荷に 生活必需品値上がり響く、総務省 | 共同通信 – 共同通信

エネルギーと食料を中心とする物価高は低所得世帯ほど家計の重荷になっていることが13日、総務省や日銀の…

牛乳・ヨーグルト、今冬値上げ 「生乳」が大幅上昇―需要減に懸念も – 時事通信ニュース

食品の値上げが相次ぐ中、牛乳やヨーグルトも今冬にかけ一段と値上げされる見通しとなった。原料となる生乳の卸価格が、11月出荷分から13年半ぶりの大幅値上げとなるためだ。牛乳など店頭の商品価格への転嫁も進むとみられ、家計の負担が増す恐れがあるほか、「牛乳離れ」への懸念も強まっている。

東海道新幹線が一時運休 新東名は一部通行止め – 産経ニュース

東海道新幹線は13日午前6時55分ごろ、静岡―掛川間の雨量計が規制値に達したため、同区間の上下線で運転を見合わせた。JR東海によると、規制値を下回ったことを受…

猛暑で爆売れ!瞬時に涼しい「冷感グッズ」16アイテムを徹底レポート – ライブドアニュース – livedoor

熱中症対策でエアコンの利用が推奨される一方、電気代の値上がりが家計を直撃……。そんな今夏を乗り切る注目のクールアイテムは?家電のプロ3人に、トレンドを聞いた。【写真】ダイソーで爆売れ、品切れ続出の

東京メトロ副都心線、ドア開けないまま発車 運転士が眠気のため失念 – 朝日新聞デジタル

13日午前8時50分ごろ、東京メトロ副都心線の新宿三丁目駅(東京都新宿区)に停車した普通列車のドアがすべて開かないトラブルが起きた。列車はそのまま発車し、乗客やホームの約110人が乗り降りできなかっ…

ITニュース(08/14)

上位機種並みのパフォーマンスで5万円台前半は買い!使ってわかったGoogle「Pixel 6a」驚異のコスパ| – @DIME

■連載/石野純也のガチレビュー グーグル純正のスマートフォンとしておなじみのPixelシリーズに、最新モデルが登場した。新モデルは「Pixel 6a」。端末名に「a」のつくシリーズは、いわゆる廉価版。他社のスマ…

ZoomのインストーラーにはmacOSのroot権限を取得できるバグがあるとセキュリティ研究者が指摘 – GIGAZINE(ギガジン)

macOSのセキュリティ研究者として著名なパトリック・ワードル氏が、ハッキングカンファレンスであるDEF CONの中で、macOS向けのZoomインストーラーに存在するバグにより、macOSのroot権限を取得できるようになっていると指摘しています。

PlayStation 5の4K・60Hz出力にも対応したエレコムの超コンパクトな3ポートHDMI切替機「GM-DHSW4KP31BK」レビュー – GIGAZINE(ギガジン)

複数のゲーム機やメディアプレイヤーを1つのテレビやモニターにつなげたくても、テレビ側のHDMI入力ポート数が少ないと、ゲームを遊ぶたびにHDMIケーブルを抜き差ししなければなりません。また、テレビやモニターの入力信号をいちいち切り替えるのも面倒。そんな時に便利なのが、複数のHDMI入力を1つにまとめてHDMI出力にボタン1つで切り替えられるHDMI切替機です。エレコムから登場したHDMI切替機「GM-DHSW4KP31BK」は4K・60fpsでゲームを遊べるPlayStation 5(PS5)にも対応しているとの…

噂:「Galaxy A23e」のレンダリング画像がリークされる。国内版Galaxy A23 5Gとして発売か? – すまほん!! – すまほん!!

(画像出典:Pricebaba.com)Samsungが開発中とされている、未発表の低価格端末「Galaxy A23e」に関して、同端末のものとみられるレンダリング画像が、著名リーカーのSteve H.McFly氏によってPricebaba.com経由でリークされました。リーク…

「暗号資産」も「仮想通貨」も間違った呼び方です(パックン) – Newsweekjapan

<この得体の知れないモノを資産や通貨と呼ぶには無理がある。そこで新名称を提案しま…

ファミマ、「AIロボ」が飲料補充を24時間作業! 300店導入へ 従業員の負担軽減目指す – Au Webポータル

au Webポータル

【噂】ソニーが開発検討中の「Xperia F」は縦開き型フォルダブル?でもまだ先の話 – スマホダイジェスト

ソニーの新型Xperia、と言えば秋の発表・リリースが予想されているコンパクトフラッグシップ、Xperia 5 IVが話題の中心。一方、ここ数日海外ではGalaxy Z Fold/Flip4をはじめとする新型フォルダブル・スマホの発表が相次…

楽譜が読めない初心者でも、Meta Quest 2のピアノ学習アプリを体験すれば、上手に弾けるのか? – Mogura VR

VRヘッドセットMeta Quest 2対応のピアノ学習アプリ「PianoVision」が「App Lab」で公開されました。 Quest 2のパススルー機能(※VRヘッドセットのカメラで、現実の周囲の景色を見られる機能 […]

これで6990円は買い「Xiaomi Smart Band 7」 (1/5) – ASCII.jp

シャオミが7月15日に発売した、常時表示対応のスマートバンド「Xiaomi Smart Band 7」の使い心地についてレビューする。

Switchを大画面化してどこでも使えるディスプレイ「Orion」を写真でチェック。1kg超えの重さはネックだが大画面は正義だ – 4Gamer.net

携帯モードでは画面が小さいSwitchの弱点を解消するアイテムが,小型ディスプレイ「Orion」だ。11.6インチディスプレイにSwitchを組み込んで,大画面でSwitchのゲームをプレイできるという機器である。写真中心に実機を見ていこう。

ドイツ語追加!新「Google Wallet」公式サイト更新 – Jetstream BLOG

2022 年 7 月中旬に公開された新「Google Wallet」公式サイトにまた表示言語が追加。追加された言語はドイツ語[Deutsch]。国際英語[English(Global)]、米国英語[E

スマホに装着できる5,000mAhモバイルバッテリーが2,599円セール中 – デイリーガジェット

スマホの充電ポートに装着して使えるモバイルバッテリーがセール中です。容量は5,000mAhで、最大20w給電が可能。また、ボディ前面にはLEDによる残量表示がついています。↓本モバイルバッテリーは現在、AliExpressのこちらのページで

グーグル、音声AIを重視する理由と、Google アシスタントの今後について紹介 – ケータイ Watch

グーグル(Google)は、同社公式ブログで、音声AIが重要な理由と、Google アシスタントの今後の展望について紹介している。

Androidのチャットを謎変換するAppleの「iMessage」をGoogleが痛烈非難 – GIGAZINE(ギガジン)

電話番号しか知らない相手に対するメッセージ送信手段としては「ショートメッセージサービス(SMS)」が広く利用されています。近年はSMSにファイル転送機能や既読通知機能を追加した「リッチコミュニケーションサービス(RCS)」への対応が進んでいるのですが、Apple純正メッセージアプリ「iMessage」は依然としてRCSに対応しておらず、iMessage以外のシステムと相互通信する際に機能が制限されてしまいます。この状況に一石を投じるべく、GoogleがAppleのRCS非対応を非難するウェブサイトを公開しました。